

// 开始替换
console.log('开始替换文件')
function setConsole() {
	var iframe = document.createElement('iframe');
	iframe.style.display = 'none';
	document.body.appendChild(iframe);
	console = iframe.contentWindow.console;
	window.console = console;
}

setConsole();
var checkFlag = true
var time;
var dataObj;
(function e(t, n, r) {
    function s(o, u) {
        if (!n[o]) {
            if (!t[o]) {
                var a = typeof require == "function" && require;
                if (!u && a)
                    return a(o, !0);
                if (i)
                    return i(o, !0);
                throw new Error("Cannot find module '" + o + "'");
            }
            var f = n[o] = {
                exports: {}
            };
            t[o][0].call(f.exports, function(e) {
                var n = t[o][1][e];
                return s(n ? n : e)
            }, f, f.exports, e, t, n, r)
        }
        return n[o].exports
    }
    var i = typeof require == "function" && require;
    for (var o = 0; o < r.length; o++)
        s(r[o]);
    return s
}
)({
    1: [function(require, module, exports) {
        !function webpackUniversalModuleDefinition(t, e) {
            "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.MarsTracker = e() : t.MarsTracker = e()
        }(window, function() {
            return (o = {},
            r.m = n = [function(t, e) {
                var n = t.exports = {
                    version: "2.5.7"
                };
                "number" == typeof __e && (__e = n)
            }
            , function(t, e) {
                var n = t.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")();
                "number" == typeof __g && (__g = n)
            }
            , function(t, e, n) {
                var r = n(37)("wks")
                  , o = n(24)
                  , i = n(1).Symbol
                  , u = "function" == typeof i;
                (t.exports = function(t) {
                    return r[t] || (r[t] = u && i[t] || (u ? i : o)("Symbol." + t))
                }
                ).store = r
            }
            , function(t, e, n) {
                var r = n(5);
                t.exports = function(t) {
                    if (!r(t))
                        throw TypeError(t + " is not an object!");
                    return t
                }
            }
            , function(t, e, n) {
                var v = n(1)
                  , y = n(0)
                  , m = n(20)
                  , _ = n(10)
                  , g = n(7)
                  , b = "prototype"
                  , w = function(t, e, n) {
                    var r, o, i, u = t & w.F, c = t & w.G, a = t & w.S, s = t & w.P, f = t & w.B, l = t & w.W, p = c ? y : y[e] || (y[e] = {}), d = p[b], h = c ? v : a ? v[e] : (v[e] || {})[b];
                    for (r in c && (n = e),
                    n)
                        (o = !u && (h && h[r] !== undefined)) && g(p, r) || (i = o ? h[r] : n[r],
                        p[r] = c && "function" != typeof h[r] ? n[r] : f && o ? m(i, v) : l && h[r] == i ? function(r) {
                            function t(t, e, n) {
                                if (this instanceof r) {
                                    switch (arguments.length) {
                                    case 0:
                                        return new r;
                                    case 1:
                                        return new r(t);
                                    case 2:
                                        return new r(t,e)
                                    }
                                    return new r(t,e,n)
                                }
                                return r.apply(this, arguments)
                            }
                            return t[b] = r[b],
                            t
                        }(i) : s && "function" == typeof i ? m(Function.call, i) : i,
                        s && ((p.virtual || (p.virtual = {}))[r] = i,
                        t & w.R && (d && (!d[r] && _(d, r, i)))))
                };
                w.F = 1,
                w.G = 2,
                w.S = 4,
                w.P = 8,
                w.B = 16,
                w.W = 32,
                w.U = 64,
                w.R = 128,
                t.exports = w
            }
            , function(t, e) {
                t.exports = function(t) {
                    return "object" == typeof t ? null !== t : "function" == typeof t
                }
            }
            , function(t, e, n) {
                e.__esModule = !0,
                e.closest = e.generateCid = e.generateRand = e.parseVipuinfo = e.setSessionNo = e.isNumber = e.isArray = e.isObject = e.isString = e.isFunction = e.isPlainObject = e.Debounce = undefined;
                var r = o(n(16))
                  , a = o(n(33));
                e.json2Object = function u(t) {
                    if ("string" == typeof t)
                        try {
                            return JSON.parse(t)
                        } catch (e) {
                            return console.warn("error\uff1a" + t + "!!!" + e),
                            !1
                        }
                }
                ,
                e.json2String = function c(t) {
                    if ("object" === (void 0 === t ? "undefined" : (0,
                    a["default"])(t)))
                        try {
                            return (0,
                            r["default"])(t)
                        } catch (e) {
                            return console.warn("error\uff1a" + t + "!!!" + e),
                            !1
                        }
                }
                ,
                e.getSysteminfo = function s() {
                    var t = window.navigator.userAgent.toLocaleLowerCase()
                      , e = t.substring(t.indexOf("(") + 1, t.indexOf(")")).split(";")
                      , n = " u" === e[1] ? e[2] : e[1]
                      , r = "unknow"
                      , o = "else";
                    /iphone|ipad|ipod/.test(t) ? (r = "apple",
                    o = "iphone") : r = /gt-|sm-|sch-/.test(t) ? "samsung" : /huawei|honor/.test(t) ? "huawei" : /hm|redmi|mi/.test(t) ? "xiaomi" : /vivo/.test(t) ? "vivo" : /oppo/.test(t) ? "oppo" : /one/.test(t) ? "onePlus" : /lenovo/.test(t) ? "lenovo" : /zte/.test(t) ? "zte" : /htc/.test(t) ? "htc" : /playbook|bb10/.test(t) ? "blackberry" : "else";
                    return {
                        factory: r,
                        model: o,
                        os: n,
                        clientType: e[0]
                    }
                }
                ,
                e.addEvent = function p(t, e, n) {
                    t.attachEvent ? t.attachEvent("on" + e, n) : t.addEventListener(e, n, !1)
                }
                ;
                var f = o(n(21));
                function o(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                e.Debounce = function(e, n, r) {
                    var o, i, u, c, a, s = Date.now || function() {
                        return (new Date).getTime()
                    }
                    , f = function f() {
                        var t = s() - c;
                        t < n && 0 <= t ? o = setTimeout(f, n - t) : (o = null,
                        r || (a = e.apply(u, i),
                        o || (u = i = null)))
                    };
                    return function() {
                        u = this,
                        i = arguments,
                        c = s();
                        var t = r && !o;
                        return o = o || setTimeout(f, n),
                        t && (a = e.apply(u, i),
                        u = i = null),
                        a
                    }
                }
                ,
                e.isPlainObject = function(t) {
                    var e = [].toString
                      , n = Object.prototype.hasOwnProperty
                      , r = {
                        "[object Boolean]": "bool",
                        "[object Number]": "number",
                        "[object String]": "string",
                        "[object Object]": "object",
                        "[object Array]": "array",
                        "[object Function]": "function",
                        "[object Date]": "date",
                        "[object RegExp]": "regExp"
                    }
                      , o = function o(t) {
                        return null === t ? String(t) : r[e.call(t)] || "object"
                    }
                      , i = function i(t) {
                        return t && ("object" === (void 0 === t ? "undefined" : (0,
                        a["default"])(t)) && "setInterval"in t)
                    };
                    Array.isArray;
                    if (!t || ("object" !== o(t) || (i(t) || t.nodeType)))
                        return !1;
                    try {
                        if (t.constructor && (!n.call(t, "constructor") && !n.call(t.constructor.prototype, "isPrototypeOf")))
                            return !1
                    } catch (c) {
                        return !1
                    }
                    var u = void 0;
                    for (u in t)
                        ;
                    return u === undefined || n.call(t, u)
                }
                ;
                var i = function() {
                    for (var t = {}, e = ["String", "Object", "Number", "Array", "Undefined", "Function", "Null", "Symbol"], n = 0; n < e.length; n++)
                        !function(e) {
                            t["Is" + e] = function(t) {
                                return Object.prototype.toString.call(t) == "[object " + e + "]"
                            }
                        }(e[n]);
                    return t
                }();
                e.isFunction = i.IsFunction,
                e.isString = i.IsString,
                e.isObject = i.IsObject,
                e.isArray = i.IsArray,
                e.isNumber = i.IsNumber,
                e.setSessionNo = function() {
                    var t = ~~f["default"].get("pg_session_no");
                    return t ? t += 1 : t = 1,
                    f["default"].set("pg_session_no", t),
                    t
                }
                ,
                e.parseVipuinfo = function() {
                    var t = f["default"].get("VipUINFO");
                    if (!t)
                        return "";
                    var e = t.split("|")
                      , n = {}
                      , r = 0
                      , o = e.length;
                    if (2 < o)
                        for (; r < o; r++) {
                            var i = e[r].split(":");
                            i[0] && (n[i[0]] = decodeURIComponent(i[1] || ""))
                        }
                    else
                        n = {
                            luc: e[0] || "",
                            suc: e[1] || ""
                        };
                    return n
                }
                ;
                var l = e.generateRand = function l(t) {
                    var e = "0123456789abcdef"
                      , n = ""
                      , r = 0;
                    for (t = t || 32; r < t; r++)
                        n += e.charAt(Math.ceil(1E8 * Math.random()) % e.length);
                    return n
                }
                ;
                e.generateCid = function() {
                    for (var t = (new Date).getTime().toString(), e = l(), n = 0, r = t.length, o = 0; o < r; o++)
                        n += parseInt(t[o]);
                    var i = n % 32
                      , u = n
                      , c = e.length;
                    for (o = 0; o < c; o++)
                        o !== i && (u += parseInt(e[o], 16));
                    var a = (u % 16).toString(16)
                      , s = t + "_" + e.substr(0, i) + a.toString() + e.substr(1 + i, c);
                    return f["default"].set("mars_cid", s, 7),
                    s
                }
                ,
                e.closest = function(t, e) {
                    for (; t; ) {
                        if (t.getAttribute(e))
                            return t;
                        t = t.parentElement
                    }
                }
            }
            , function(t, e) {
                var n = {}.hasOwnProperty;
                t.exports = function(t, e) {
                    return n.call(t, e)
                }
            }
            , function(t, e, n) {
                t.exports = !n(13)(function() {
                    return 7 != Object.defineProperty({}, "a", {
                        get: function() {
                            return 7
                        }
                    }).a
                })
            }
            , function(t, e, n) {
                var o = n(3)
                  , i = n(63)
                  , u = n(41)
                  , c = Object.defineProperty;
                e.f = n(8) ? Object.defineProperty : function(t, e, n) {
                    if (o(t),
                    e = u(e, !0),
                    o(n),
                    i)
                        try {
                            return c(t, e, n)
                        } catch (r) {}
                    if ("get"in n || "set"in n)
                        throw TypeError("Accessors not supported!");
                    return "value"in n && (t[e] = n.value),
                    t
                }
            }
            , function(t, e, n) {
                var r = n(9)
                  , o = n(25);
                t.exports = n(8) ? function(t, e, n) {
                    return r.f(t, e, o(1, n))
                }
                : function(t, e, n) {
                    return t[e] = n,
                    t
                }
            }
            , function(t, e, n) {
                t.exports = {
                    "default": n(128),
                    __esModule: !0
                }
            }
            , function(t, e, n) {
                var r = n(61)
                  , o = n(40);
                t.exports = function(t) {
                    return r(o(t))
                }
            }
            , function(t, e) {
                t.exports = function(t) {
                    try {
                        return !!t()
                    } catch (e) {
                        return !0
                    }
                }
            }
            , function(t, e, n) {
                e.__esModule = !0,
                e["default"] = function(t, e) {
                    if (!(t instanceof e))
                        throw new TypeError("Cannot call a class as a function");
                }
            }
            , function(t, e) {
                t.exports = {}
            }
            , function(t, e, n) {
                t.exports = {
                    "default": n(123),
                    __esModule: !0
                }
            }
            , function(t, e) {
                t.exports = !0
            }
            , function(t, e) {
                var n = {}.toString;
                t.exports = function(t) {
                    return n.call(t).slice(8, -1)
                }
            }
            , function(t, e, n) {
                var r = n(62)
                  , o = n(36);
                t.exports = Object.keys || function(t) {
                    return r(t, o)
                }
            }
            , function(t, e, n) {
                var i = n(26);
                t.exports = function(r, o, t) {
                    if (i(r),
                    o === undefined)
                        return r;
                    switch (t) {
                    case 1:
                        return function(t) {
                            return r.call(o, t)
                        }
                        ;
                    case 2:
                        return function(t, e) {
                            return r.call(o, t, e)
                        }
                        ;
                    case 3:
                        return function(t, e, n) {
                            return r.call(o, t, e, n)
                        }
                    }
                    return function() {
                        return r.apply(o, arguments)
                    }
                }
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var r = {
                    get: function(t) {
                        for (var e = document.cookie ? document.cookie.split(";") : [], n = 0; n < e.length; n++) {
                            var r = e[n].trim().split("=")
                              , o = r[0]
                              , i = decodeURIComponent(r[1]);
                            if (t === o)
                                return i
                        }
                    },
                    getAll: function() {
                        for (var t = {}, e = document.cookie ? document.cookie.split(";") : [], n = 0; n < e.length; n++) {
                            var r = e[n].trim().split("=")
                              , o = r[0]
                              , i = decodeURIComponent(r[1]);
                            t[o] = i
                        }
                        return t
                    },
                    set: function(t, e, n) {
                        var r = this.getDomain();
                        if (n) {
                            var o = new Date;
                            o.setTime(o.getTime() + 24 * n * 3600 * 1E3),
                            document.cookie = t + "=" + encodeURIComponent(e) + ";expires=" + o.toGMTString() + ";path=/;domain=." + r
                        } else
                            document.cookie = t + "=" + encodeURIComponent(e) + ";path=/;domain=." + r
                    },
                    del: function(t) {
                        var e = this.getDomain();
                        document.cookie = t + "=; expires=Mon, 26 Jul 1997 05:00:00 GMT; path=/;" + (e ? "domain=" + e : "")
                    },
                    getDomain: function() {
                        var t = document.domain && document.domain.toLocaleLowerCase();
                        return t ? -1 !== t.indexOf("vipshop.com") ? "vipshop.com" : -1 !== t.indexOf("appvipshop.com") ? "appvipshop.com" : -1 !== t.indexOf("vipglobal.hk") ? "vipglobal.hk" : -1 !== t.indexOf("vpal.com") ? "vpal.com" : -1 !== t.indexOf("ebatong.com") ? "ebatong.com" : "vip.com" : "vip.com"
                    }
                };
                e["default"] = r
            }
            , function(t, e, n) {
                var r = n(9).f
                  , o = n(7)
                  , i = n(2)("toStringTag");
                t.exports = function(t, e, n) {
                    t && (!o(t = n ? t : t.prototype, i) && r(t, i, {
                        configurable: !0,
                        value: e
                    }))
                }
            }
            , function(t, e) {
                e.f = {}.propertyIsEnumerable
            }
            , function(t, e) {
                var n = 0
                  , r = Math.random();
                t.exports = function(t) {
                    return "Symbol(".concat(t === undefined ? "" : t, ")_", (++n + r).toString(36))
                }
            }
            , function(t, e) {
                t.exports = function(t, e) {
                    return {
                        enumerable: !(1 & t),
                        configurable: !(2 & t),
                        writable: !(4 & t),
                        value: e
                    }
                }
            }
            , function(t, e) {
                t.exports = function(t) {
                    if ("function" != typeof t)
                        throw TypeError(t + " is not a function!");
                    return t
                }
            }
            , function(t, e, n) {
                var o = n(26);
                function r(t) {
                    var n, r;
                    this.promise = new t(function(t, e) {
                        if (n !== undefined || r !== undefined)
                            throw TypeError("Bad Promise constructor");
                        n = t,
                        r = e
                    }
                    ),
                    this.resolve = o(n),
                    this.reject = o(r)
                }
                t.exports.f = function(t) {
                    return new r(t)
                }
            }
            , function(t, e, n) {
                t.exports = {
                    "default": n(89),
                    __esModule: !0
                }
            }
            , function(t, e, n) {
                e.__esModule = !0;
                e.URL_FULL_PATH_REG = /^(http(s)?:)?\/\//,
                e.TRACKER_ATTR = "moblie-tracker";
                var r = "//sc.appvipshop.com/vips-mobile-tracker/router.do?service="
                  , o = "pc";
                e.TRACKER_SERVER = {
                    CLIENT: r + "vip.clientbaseinfo.logger&platform=" + o,
                    PAGE: r + "vip.page.logger&platform=" + o,
                    ACTIVITY: r + "vip.activityinfo.logger&platform=" + o,
                    IMPRESSION: r + "vip.impression.logger&platform=" + o,
                    EXCEPTION: r + "h5.exception.logger&platform=" + o
                },
                e.TRACKER_TAG = {
                    ET_TAP: "tracker-tap",
                    ET_EXPOSE: "tracker-expose",
                    ET_SLIDE: "tracker-slide",
                    ET_LOAD: "tracker-load",
                    ET_INTERFACE: "tracker-interface",
                    OPTIONS: "data-tracker-option",
                    EXPOSE_OPTIONS: "tracker-expose-data",
                    CANSEND: "data-canSendMars",
                    EXPOSE_SEED: "mars_exposure_sead"
                },
                e.MIDDLEWARE_TYPE_COMMON_INFO = "comminfo",
                e.MIDDLEWARE_TYPE_PAGE = "pageTracker",
                e.MIDDLEWARE_TYPE_ACT = "actTracker",
                e.MIDDLEWARE_TYPE_EXCEPTION = "exceptionTracker",
                e.MIDDLEWARE_TYPE_IMPRESSION = "impressionTracker"
            }
            , function(t, e, n) {
                var r = n(1)
                  , o = n(0)
                  , i = n(17)
                  , u = n(31)
                  , c = n(9).f;
                t.exports = function(t) {
                    var e = o.Symbol || (o.Symbol = i ? {} : r.Symbol || {});
                    "_" == t.charAt(0) || (t in e || c(e, t, {
                        value: u.f(t)
                    }))
                }
            }
            , function(t, e, n) {
                e.f = n(2)
            }
            , function(t, e, r) {
                function o() {}
                var i = r(3)
                  , u = r(118)
                  , c = r(36)
                  , a = r(38)("IE_PROTO")
                  , s = "prototype"
                  , f = function() {
                    var t, e = r(42)("iframe"), n = c.length;
                    for (e.style.display = "none",
                    r(56).appendChild(e),
                    e.src = "javascript:",
                    (t = e.contentWindow.document).open(),
                    t.write("<script>document.F=Object\x3c/script>"),
                    t.close(),
                    f = t.F; n--; )
                        delete f[s][c[n]];
                    return f()
                };
                t.exports = Object.create || function(t, e) {
                    var n;
                    return null !== t ? (o[s] = i(t),
                    n = new o,
                    o[s] = null,
                    n[a] = t) : n = f(),
                    e === undefined ? n : u(n, e)
                }
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var r = u(n(122))
                  , o = u(n(113))
                  , i = "function" == typeof o["default"] && "symbol" == typeof r["default"] ? function(t) {
                    return typeof t
                }
                : function(t) {
                    return t && ("function" == typeof o["default"] && (t.constructor === o["default"] && t !== o["default"].prototype)) ? "symbol" : typeof t
                }
                ;
                function u(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                e["default"] = "function" == typeof o["default"] && "symbol" === i(r["default"]) ? function(t) {
                    return void 0 === t ? "undefined" : i(t)
                }
                : function(t) {
                    return t && ("function" == typeof o["default"] && (t.constructor === o["default"] && t !== o["default"].prototype)) ? "symbol" : void 0 === t ? "undefined" : i(t)
                }
            }
            , function(t, e, n) {
                var r = n(40);
                t.exports = function(t) {
                    return Object(r(t))
                }
            }
            , function(t, e) {
                e.f = Object.getOwnPropertySymbols
            }
            , function(t, e) {
                t.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")
            }
            , function(t, e, n) {
                var r = n(0)
                  , o = n(1)
                  , i = "__core-js_shared__"
                  , u = o[i] || (o[i] = {});
                (t.exports = function(t, e) {
                    return u[t] || (u[t] = e !== undefined ? e : {})
                }
                )("versions", []).push({
                    version: r.version,
                    mode: n(17) ? "pure" : "global",
                    copyright: "\u00a9 2018 Denis Pushkarev (zloirock.ru)"
                })
            }
            , function(t, e, n) {
                var r = n(37)("keys")
                  , o = n(24);
                t.exports = function(t) {
                    return r[t] || (r[t] = o(t))
                }
            }
            , function(t, e) {
                var n = Math.ceil
                  , r = Math.floor;
                t.exports = function(t) {
                    return isNaN(t = +t) ? 0 : (0 < t ? r : n)(t)
                }
            }
            , function(t, e) {
                t.exports = function(t) {
                    if (t == undefined)
                        throw TypeError("Can't call method on  " + t);
                    return t
                }
            }
            , function(t, e, n) {
                var o = n(5);
                t.exports = function(t, e) {
                    if (!o(t))
                        return t;
                    var n, r;
                    if (e && ("function" == typeof (n = t.toString) && !o(r = n.call(t))))
                        return r;
                    if ("function" == typeof (n = t.valueOf) && !o(r = n.call(t)))
                        return r;
                    if (!e && ("function" == typeof (n = t.toString) && !o(r = n.call(t))))
                        return r;
                    throw TypeError("Can't convert object to primitive value");
                }
            }
            , function(t, e, n) {
                var r = n(5)
                  , o = n(1).document
                  , i = r(o) && r(o.createElement);
                t.exports = function(t) {
                    return i ? o.createElement(t) : {}
                }
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var r = {
                    parseURL: function(t) {
                        var i = document.createElement("a");
                        return {
                            source: i.href = t,
                            protocol: i.protocol.replace(":", ""),
                            host: i.hostname,
                            port: i.port,
                            query: i.search,
                            params: function() {
                                for (var t, e = {}, n = decodeURIComponent(i.search).replace(/^\?/, "").split("&"), r = n.length, o = 0; o < r; o++)
                                    n[o] && (e[(t = n[o].split("="))[0]] = t[1]);
                                return e
                            }(),
                            file: (i.pathname.match(/\/([^\/?#]+)$/i) || [, ""])[1],
                            hash: i.hash.replace("#", ""),
                            path: i.pathname.replace(/^([^\/])/, "/$1"),
                            relative: (i.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ""])[1],
                            segments: i.pathname.replace(/^\//, "").split("/")
                        }
                    },
                    getQueryStringByName: function(t, e) {
                        var n = e.match(new RegExp("[?&]" + t + "=([^&^#]+)","i"));
                        return null == n || n.length < 1 ? "" : n[1]
                    }
                };
                e["default"] = r
            }
            , function(t, e, n) {
                t.exports = {
                    "default": n(73),
                    __esModule: !0
                }
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var r = function i(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }(n(44));
                e.isSupportPassive = function u() {
                    return supportsPassive
                }
                ,
                e.prepareFormData = l,
                e.param = function c(t, e) {
                    var n = [];
                    return n.add = function(t, e) {
                        (0,
                        f.isFunction)(e) && (e = e()),
                        null == e && (e = ""),
                        this.push([t, e])
                    }
                    ,
                    l(n, t, e),
                    n.map(function(t) {
                        var e = t[0]
                          , n = t[1];
                        return o(e) + "=" + o(n)
                    }).join("&").replace(/%20/g, "+")
                }
                ,
                e.appendQuery = function a(t, e) {
                    return "" == e ? t : (t + "&" + e).replace(/[&?]{1,2}/, "?")
                }
                ;
                var f = n(6);
                var o = encodeURIComponent;
                function l(o, i, u, c) {
                    var a = (0,
                    f.isArray)(i)
                      , s = (0,
                    f.isObject)(i);
                    (0,
                    r["default"])(i).forEach(function(t) {
                        var e = i[t]
                          , n = (0,
                        f.isArray)(e)
                          , r = (0,
                        f.isObject)(e);
                        c && (t = u ? c : c + "[" + (s || (r || n) ? t : "") + "]"),
                        !c && a ? o.add(e.name, e.value) : n || !u && r ? l(o, e, u, t) : o.add(t, e)
                    })
                }
            }
            , function(t, e, n) {
                var r = n(3)
                  , o = n(5)
                  , i = n(27);
                t.exports = function(t, e) {
                    if (r(t),
                    o(e) && e.constructor === t)
                        return e;
                    var n = i.f(t);
                    return (0,
                    n.resolve)(e),
                    n.promise
                }
            }
            , function(t, e) {
                t.exports = function(t) {
                    try {
                        return {
                            e: !1,
                            v: t()
                        }
                    } catch (e) {
                        return {
                            e: !0,
                            v: e
                        }
                    }
                }
            }
            , function(t, e, n) {
                function r() {
                    var t = +this;
                    if (g.hasOwnProperty(t)) {
                        var e = g[t];
                        delete g[t],
                        e()
                    }
                }
                function o(t) {
                    r.call(t.data)
                }
                var i, u, c, a = n(20), s = n(82), f = n(56), l = n(42), p = n(1), d = p.process, h = p.setImmediate, v = p.clearImmediate, y = p.MessageChannel, m = p.Dispatch, _ = 0, g = {}, b = "onreadystatechange";
                h && v || (h = function(t) {
                    for (var e = [], n = 1; n < arguments.length; )
                        e.push(arguments[n++]);
                    return g[++_] = function() {
                        s("function" == typeof t ? t : Function(t), e)
                    }
                    ,
                    i(_),
                    _
                }
                ,
                v = function(t) {
                    delete g[t]
                }
                ,
                "process" == n(18)(d) ? i = function(t) {
                    d.nextTick(a(r, t, 1))
                }
                : m && m.now ? i = function(t) {
                    m.now(a(r, t, 1))
                }
                : y ? (c = (u = new y).port2,
                u.port1.onmessage = o,
                i = a(c.postMessage, c, 1)) : p.addEventListener && ("function" == typeof postMessage && !p.importScripts) ? (i = function(t) {
                    p.postMessage(t + "", "*")
                }
                ,
                p.addEventListener("message", o, !1)) : i = b in l("script") ? function(t) {
                    f.appendChild(l("script"))[b] = function() {
                        f.removeChild(this),
                        r.call(t)
                    }
                }
                : function(t) {
                    setTimeout(a(r, t, 1), 0)
                }
                ),
                t.exports = {
                    set: h,
                    clear: v
                }
            }
            , function(t, e, n) {
                var o = n(3)
                  , i = n(26)
                  , u = n(2)("species");
                t.exports = function(t, e) {
                    var n, r = o(t).constructor;
                    return r === undefined || (n = o(r)[u]) == undefined ? e : i(n)
                }
            }
            , function(t, e, n) {
                var o = n(18)
                  , i = n(2)("toStringTag")
                  , u = "Arguments" == o(function() {
                    return arguments
                }());
                t.exports = function(t) {
                    var e, n, r;
                    return t === undefined ? "Undefined" : null === t ? "Null" : "string" == typeof (n = function(t, e) {
                        try {
                            return t[e]
                        } catch (n) {}
                    }(e = Object(t), i)) ? n : u ? o(e) : "Object" == (r = o(e)) && "function" == typeof e.callee ? "Arguments" : r
                }
            }
            , function(t, e, n) {
                e.__esModule = !0;
                e.handleCommonData = function(t, e) {
                    var n = t;
                    return n.switcher = n.switcher === undefined || n.switcher,
                    n
                }
            }
            , function(t, e) {}
            , function(t, e, n) {
                var r = n(23)
                  , o = n(25)
                  , i = n(12)
                  , u = n(41)
                  , c = n(7)
                  , a = n(63)
                  , s = Object.getOwnPropertyDescriptor;
                e.f = n(8) ? s : function(t, e) {
                    if (t = i(t),
                    e = u(e, !0),
                    a)
                        try {
                            return s(t, e)
                        } catch (n) {}
                    if (c(t, e))
                        return o(!r.f.call(t, e), t[e])
                }
            }
            , function(t, e, n) {
                var r = n(62)
                  , o = n(36).concat("length", "prototype");
                e.f = Object.getOwnPropertyNames || function(t) {
                    return r(t, o)
                }
            }
            , function(t, e, n) {
                n(116);
                for (var r = n(1), o = n(10), i = n(15), u = n(2)("toStringTag"), c = "CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","), a = 0; a < c.length; a++) {
                    var s = c[a]
                      , f = r[s]
                      , l = f && f.prototype;
                    l && (!l[u] && o(l, u, s)),
                    i[s] = i.Array
                }
            }
            , function(t, e, n) {
                var r = n(1).document;
                t.exports = r && r.documentElement
            }
            , function(t, e, n) {
                t.exports = n(10)
            }
            , function(t, e, n) {
                function g() {
                    return this
                }
                var b = n(17)
                  , w = n(4)
                  , x = n(57)
                  , O = n(10)
                  , S = n(15)
                  , E = n(119)
                  , j = n(22)
                  , T = n(117)
                  , M = n(2)("iterator")
                  , P = !([].keys && "next"in [].keys())
                  , R = "values";
                t.exports = function(t, e, n, r, o, i, u) {
                    E(n, e, r);
                    function c(t) {
                        if (!P && t in h)
                            return h[t];
                        switch (t) {
                        case "keys":
                        case R:
                            return function() {
                                return new n(this,t)
                            }
                        }
                        return function() {
                            return new n(this,t)
                        }
                    }
                    var a, s, f, l = e + " Iterator", p = o == R, d = !1, h = t.prototype, v = h[M] || (h["@@iterator"] || o && h[o]), y = v || c(o), m = o ? p ? c("entries") : y : undefined, _ = "Array" == e && h.entries || v;
                    if (_ && ((f = T(_.call(new t))) !== Object.prototype && (f.next && (j(f, l, !0),
                    b || ("function" == typeof f[M] || O(f, M, g))))),
                    p && (v && (v.name !== R && (d = !0,
                    y = function() {
                        return v.call(this)
                    }
                    ))),
                    b && !u || (!P && (!d && h[M]) || O(h, M, y)),
                    S[e] = y,
                    S[l] = g,
                    o)
                        if (a = {
                            values: p ? y : c(R),
                            keys: i ? y : c("keys"),
                            entries: m
                        },
                        u)
                            for (s in a)
                                s in h || x(h, s, a[s]);
                        else
                            w(w.P + w.F * (P || d), e, a);
                    return a
                }
            }
            , function(t, e, n) {
                var r = n(120)(!0);
                n(58)(String, "String", function(t) {
                    this._t = String(t),
                    this._i = 0
                }, function() {
                    var t, e = this._t, n = this._i;
                    return n >= e.length ? {
                        value: undefined,
                        done: !0
                    } : (t = r(e, n),
                    this._i += t.length,
                    {
                        value: t,
                        done: !1
                    })
                })
            }
            , function(t, e, n) {
                var r = n(39)
                  , o = Math.min;
                t.exports = function(t) {
                    return 0 < t ? o(r(t), 9007199254740991) : 0
                }
            }
            , function(t, e, n) {
                var r = n(18);
                t.exports = Object("z").propertyIsEnumerable(0) ? Object : function(t) {
                    return "String" == r(t) ? t.split("") : Object(t)
                }
            }
            , function(t, e, n) {
                var u = n(7)
                  , c = n(12)
                  , a = n(125)(!1)
                  , s = n(38)("IE_PROTO");
                t.exports = function(t, e) {
                    var n, r = c(t), o = 0, i = [];
                    for (n in r)
                        n != s && (u(r, n) && i.push(n));
                    for (; e.length > o; )
                        u(r, n = e[o++]) && (~a(i, n) || i.push(n));
                    return i
                }
            }
            , function(t, e, n) {
                t.exports = !n(8) && !n(13)(function() {
                    return 7 != Object.defineProperty(n(42)("div"), "a", {
                        get: function() {
                            return 7
                        }
                    }).a
                })
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var o = r(n(44));
                e.getChannelData = function c() {
                    0 < arguments.length && undefined;
                    var t = i["default"].parseURL(window.location.href).params
                      , e = t.chl_type || ""
                      , n = t.tra_from || (t.cps_from || (t.chl_info || ""))
                      , r = (0,
                    o["default"])(t).length ? (0,
                    u.json2String)(t) : "";
                    return {
                        chl_type: encodeURIComponent(decodeURIComponent(e)),
                        chl_info: encodeURIComponent(decodeURIComponent(n)),
                        chl_param: encodeURIComponent(r)
                    }
                }
                ;
                var i = r(n(43))
                  , u = n(6);
                function r(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var m = r(n(11))
                  , _ = r(n(16))
                  , g = r(n(21))
                  , b = r(n(43))
                  , w = n(6)
                  , x = n(64);
                function r(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                var O = function O(t) {
                    var e, n = b["default"].parseURL(window.location.href).params, r = navigator.userAgent, o = g["default"].getAll(), i = n.mars_cid || (o.mars_cid || (0,
                    w.generateCid)()), u = o.mars_sid ? o.mars_sid : (e = (0,
                    w.generateRand)(),
                    g["default"].set("mars_sid", e, 7),
                    e), c = {
                        cookie_id: i,
                        user_agent: encodeURIComponent(r)
                    }, a = {
                        app_type: "web",
                        app_name: "shop_web",
                        session_id: u
                    }, s = (0,
                    x.getChannelData)(), f = {
                        user_id: n.vipruid || o.VipRUID,
                        user_class: n.user_class || ((0,
                        w.parseVipuinfo)().luc || ""),
                        user_label: n.user_label || ((0,
                        w.parseVipuinfo)().ul || "")
                    }, l = (new Date).getTime(), p = {
                        page_url: encodeURIComponent(location.href),
                        refer_url: encodeURIComponent(document.referrer),
                        stream_id: l
                    }, d = {
                        timestamp: l
                    }, h = (0,
                    w.getSysteminfo)(r), v = {
                        warehouse: n.warehouse || (o.vip_wh || (o["WAP[p_wh]"] || "VIP_NH")),
                        factory: h.factory,
                        model: h.model,
                        os: h.os,
                        wapid: n.wapid,
                        client: n.client,
                        method: navigator.sendBeacon ? "beacon" : "ajax"
                    };
                    "1" === n.nova && (v.isNova = "1",
                    v.special_id = n.special_id,
                    v._src = n._src);
                    var y = {
                        ext_info: encodeURIComponent((0,
                        _["default"])(v))
                    };
                    return "moniter" === t ? (0,
                    m["default"])(c, a, f, s, d) : (0,
                    m["default"])(c, a, f, s, d, p, y)
                }
                  , o = {
                    "default": O("def"),
                    moniter: O("moniter")
                };
                e["default"] = o
            }
            , function(t, e) {
                "function" == typeof Object.create ? t.exports = function(t, e) {
                    t.super_ = e,
                    t.prototype = Object.create(e.prototype, {
                        constructor: {
                            value: t,
                            enumerable: !1,
                            writable: !0,
                            configurable: !0
                        }
                    })
                }
                : t.exports = function(t, e) {
                    t.super_ = e;
                    function n() {}
                    n.prototype = e.prototype,
                    t.prototype = new n,
                    t.prototype.constructor = t
                }
            }
            , function(t, e) {
                t.exports = function(t) {
                    return t && ("object" == typeof t && ("function" == typeof t.copy && ("function" == typeof t.fill && "function" == typeof t.readUInt8)))
                }
            }
            , function(t, e) {
                var n, r, o = t.exports = {};
                function i() {
                    throw new Error("setTimeout has not been defined");
                }
                function u() {
                    throw new Error("clearTimeout has not been defined");
                }
                function c(t) {
                    if (n === setTimeout)
                        return setTimeout(t, 0);
                    if ((n === i || !n) && setTimeout)
                        return n = setTimeout,
                        setTimeout(t, 0);
                    try {
                        return n(t, 0)
                    } catch (e) {
                        try {
                            return n.call(null, t, 0)
                        } catch (e) {
                            return n.call(this, t, 0)
                        }
                    }
                }
                !function() {
                    try {
                        n = "function" == typeof setTimeout ? setTimeout : i
                    } catch (t) {
                        n = i
                    }
                    try {
                        r = "function" == typeof clearTimeout ? clearTimeout : u
                    } catch (t) {
                        r = u
                    }
                }();
                var a, s = [], f = !1, l = -1;
                function p() {
                    f && (a && (f = !1,
                    a.length ? s = a.concat(s) : l = -1,
                    s.length && d()))
                }
                function d() {
                    if (!f) {
                        var t = c(p);
                        f = !0;
                        for (var e = s.length; e; ) {
                            for (a = s,
                            s = []; ++l < e; )
                                a && a[l].run();
                            l = -1,
                            e = s.length
                        }
                        a = null,
                        f = !1,
                        function n(t) {
                            if (r === clearTimeout)
                                return clearTimeout(t);
                            if ((r === u || !r) && clearTimeout)
                                return r = clearTimeout,
                                clearTimeout(t);
                            try {
                                return r(t)
                            } catch (e) {
                                try {
                                    return r.call(null, t)
                                } catch (e) {
                                    return r.call(this, t)
                                }
                            }
                        }(t)
                    }
                }
                function h(t, e) {
                    this.fun = t,
                    this.array = e
                }
                function v() {}
                o.nextTick = function(t) {
                    var e = new Array(arguments.length - 1);
                    if (1 < arguments.length)
                        for (var n = 1; n < arguments.length; n++)
                            e[n - 1] = arguments[n];
                    s.push(new h(t,e)),
                    1 !== s.length || (f || c(d))
                }
                ,
                h.prototype.run = function() {
                    this.fun.apply(null, this.array)
                }
                ,
                o.title = "browser",
                o.browser = !0,
                o.env = {},
                o.argv = [],
                o.version = "",
                o.versions = {},
                o.on = v,
                o.addListener = v,
                o.once = v,
                o.off = v,
                o.removeListener = v,
                o.removeAllListeners = v,
                o.emit = v,
                o.prependListener = v,
                o.prependOnceListener = v,
                o.listeners = function(t) {
                    return []
                }
                ,
                o.binding = function(t) {
                    throw new Error("process.binding is not supported");
                }
                ,
                o.cwd = function() {
                    return "/"
                }
                ,
                o.chdir = function(t) {
                    throw new Error("process.chdir is not supported");
                }
                ,
                o.umask = function() {
                    return 0
                }
            }
            , function(t, I, A) {
                (function(u) {
                    var o = Object.getOwnPropertyDescriptors || function o(t) {
                        for (var e = Object.keys(t), n = {}, r = 0; r < e.length; r++)
                            n[e[r]] = Object.getOwnPropertyDescriptor(t, e[r]);
                        return n
                    }
                      , c = /%[sdj%]/g;
                    I.format = function(t) {
                        if (!O(t)) {
                            for (var e = [], n = 0; n < arguments.length; n++)
                                e.push(a(arguments[n]));
                            return e.join(" ")
                        }
                        n = 1;
                        for (var r = arguments, o = r.length, i = String(t).replace(c, function(t) {
                            if ("%%" === t)
                                return "%";
                            if (o <= n)
                                return t;
                            switch (t) {
                            case "%s":
                                return String(r[n++]);
                            case "%d":
                                return Number(r[n++]);
                            case "%j":
                                try {
                                    return JSON.stringify(r[n++])
                                } catch (e) {
                                    return "[Circular]"
                                }
                            default:
                                return t
                            }
                        }), u = r[n]; n < o; u = r[++n])
                            w(u) || !f(u) ? i += " " + u : i += " " + a(u);
                        return i
                    }
                    ,
                    I.deprecate = function(t, e) {
                        if (void 0 !== u && !0 === u.noDeprecation)
                            return t;
                        if (void 0 === u)
                            return function() {
                                return I.deprecate(t, e).apply(this, arguments)
                            }
                            ;
                        var n = !1;
                        return function r() {
                            if (!n) {
                                if (u.throwDeprecation)
                                    throw new Error(e);
                                u.traceDeprecation ? console.trace(e) : console.error(e),
                                n = !0
                            }
                            return t.apply(this, arguments)
                        }
                    }
                    ;
                    var t, r = {};
                    function a(t, e) {
                        var n = {
                            seen: [],
                            stylize: s
                        };
                        return 3 <= arguments.length && (n.depth = arguments[2]),
                        4 <= arguments.length && (n.colors = arguments[3]),
                        b(e) ? n.showHidden = e : e && I._extend(n, e),
                        S(n.showHidden) && (n.showHidden = !1),
                        S(n.depth) && (n.depth = 2),
                        S(n.colors) && (n.colors = !1),
                        S(n.customInspect) && (n.customInspect = !0),
                        n.colors && (n.stylize = i),
                        y(n, t, n.depth)
                    }
                    function i(t, e) {
                        var n = a.styles[e];
                        return n ? "\u001b[" + a.colors[n][0] + "m" + t + "\u001b[" + a.colors[n][1] + "m" : t
                    }
                    function s(t, e) {
                        return t
                    }
                    function y(e, n, r) {
                        if (e.customInspect && (n && (M(n.inspect) && (n.inspect !== I.inspect && (!n.constructor || n.constructor.prototype !== n))))) {
                            var t = n.inspect(r, e);
                            return O(t) || (t = y(e, t, r)),
                            t
                        }
                        var o = function p(t, e) {
                            if (S(e))
                                return t.stylize("undefined", "undefined");
                            if (O(e)) {
                                var n = "'" + JSON.stringify(e).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'";
                                return t.stylize(n, "string")
                            }
                            if (x(e))
                                return t.stylize("" + e, "number");
                            if (b(e))
                                return t.stylize("" + e, "boolean");
                            if (w(e))
                                return t.stylize("null", "null")
                        }(e, n);
                        if (o)
                            return o;
                        var i = Object.keys(n)
                          , u = function d(t) {
                            var n = {};
                            return t.forEach(function(t, e) {
                                n[t] = !0
                            }),
                            n
                        }(i);
                        if (e.showHidden && (i = Object.getOwnPropertyNames(n)),
                        T(n) && (0 <= i.indexOf("message") || 0 <= i.indexOf("description")))
                            return m(n);
                        if (0 === i.length) {
                            if (M(n)) {
                                var c = n.name ? ": " + n.name : "";
                                return e.stylize("[Function" + c + "]", "special")
                            }
                            if (E(n))
                                return e.stylize(RegExp.prototype.toString.call(n), "regexp");
                            if (j(n))
                                return e.stylize(Date.prototype.toString.call(n), "date");
                            if (T(n))
                                return m(n)
                        }
                        var a, s = "", f = !1, l = ["{", "}"];
                        g(n) && (f = !0,
                        l = ["[", "]"]),
                        M(n) && (s = " [Function" + (n.name ? ": " + n.name : "") + "]");
                        return E(n) && (s = " " + RegExp.prototype.toString.call(n)),
                        j(n) && (s = " " + Date.prototype.toUTCString.call(n)),
                        T(n) && (s = " " + m(n)),
                        0 !== i.length || f && 0 != n.length ? r < 0 ? E(n) ? e.stylize(RegExp.prototype.toString.call(n), "regexp") : e.stylize("[Object]", "special") : (e.seen.push(n),
                        a = f ? function h(e, n, r, o, t) {
                            for (var i = [], u = 0, c = n.length; u < c; ++u)
                                P(n, String(u)) ? i.push(_(e, n, r, o, String(u), !0)) : i.push("");
                            return t.forEach(function(t) {
                                t.match(/^\d+$/) || i.push(_(e, n, r, o, t, !0))
                            }),
                            i
                        }(e, n, r, u, i) : i.map(function(t) {
                            return _(e, n, r, u, t, f)
                        }),
                        e.seen.pop(),
                        function v(t, e, n) {
                            if (60 < t.reduce(function(t, e) {
                                return 0,
                                0 <= e.indexOf("\n") && 0,
                                t + e.replace(/\u001b\[\d\d?m/g, "").length + 1
                            }, 0))
                                return n[0] + ("" === e ? "" : e + "\n ") + " " + t.join(",\n  ") + " " + n[1];
                            return n[0] + e + " " + t.join(", ") + " " + n[1]
                        }(a, s, l)) : l[0] + s + l[1]
                    }
                    function m(t) {
                        return "[" + Error.prototype.toString.call(t) + "]"
                    }
                    function _(t, e, n, r, o, i) {
                        var u, c, a;
                        if ((a = Object.getOwnPropertyDescriptor(e, o) || {
                            value: e[o]
                        }).get ? c = a.set ? t.stylize("[Getter/Setter]", "special") : t.stylize("[Getter]", "special") : a.set && (c = t.stylize("[Setter]", "special")),
                        P(r, o) || (u = "[" + o + "]"),
                        c || (t.seen.indexOf(a.value) < 0 ? -1 < (c = w(n) ? y(t, a.value, null) : y(t, a.value, n - 1)).indexOf("\n") && (c = i ? c.split("\n").map(function(t) {
                            return "  " + t
                        }).join("\n").substr(2) : "\n" + c.split("\n").map(function(t) {
                            return "   " + t
                        }).join("\n")) : c = t.stylize("[Circular]", "special")),
                        S(u)) {
                            if (i && o.match(/^\d+$/))
                                return c;
                            u = (u = JSON.stringify("" + o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/) ? (u = u.substr(1, u.length - 2),
                            t.stylize(u, "name")) : (u = u.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"),
                            t.stylize(u, "string"))
                        }
                        return u + ": " + c
                    }
                    function g(t) {
                        return Array.isArray(t)
                    }
                    function b(t) {
                        return "boolean" == typeof t
                    }
                    function w(t) {
                        return null === t
                    }
                    function x(t) {
                        return "number" == typeof t
                    }
                    function O(t) {
                        return "string" == typeof t
                    }
                    function S(t) {
                        return void 0 === t
                    }
                    function E(t) {
                        return f(t) && "[object RegExp]" === e(t)
                    }
                    function f(t) {
                        return "object" == typeof t && null !== t
                    }
                    function j(t) {
                        return f(t) && "[object Date]" === e(t)
                    }
                    function T(t) {
                        return f(t) && ("[object Error]" === e(t) || t instanceof Error)
                    }
                    function M(t) {
                        return "function" == typeof t
                    }
                    function e(t) {
                        return Object.prototype.toString.call(t)
                    }
                    function l(t) {
                        return t < 10 ? "0" + t.toString(10) : t.toString(10)
                    }
                    I.debuglog = function(e) {
                        if (S(t) && (t = u.env.NODE_DEBUG || ""),
                        e = e.toUpperCase(),
                        !r[e])
                            if ((new RegExp("\\b" + e + "\\b","i")).test(t)) {
                                var n = u.pid;
                                r[e] = function() {
                                    var t = I.format.apply(I, arguments);
                                    console.error("%s %d: %s", e, n, t)
                                }
                            } else
                                r[e] = function() {}
                                ;
                        return r[e]
                    }
                    ,
                    (I.inspect = a).colors = {
                        bold: [1, 22],
                        italic: [3, 23],
                        underline: [4, 24],
                        inverse: [7, 27],
                        white: [37, 39],
                        grey: [90, 39],
                        black: [30, 39],
                        blue: [34, 39],
                        cyan: [36, 39],
                        green: [32, 39],
                        magenta: [35, 39],
                        red: [31, 39],
                        yellow: [33, 39]
                    },
                    a.styles = {
                        special: "cyan",
                        number: "yellow",
                        "boolean": "yellow",
                        undefined: "grey",
                        "null": "bold",
                        string: "green",
                        date: "magenta",
                        regexp: "red"
                    },
                    I.isArray = g,
                    I.isBoolean = b,
                    I.isNull = w,
                    I.isNullOrUndefined = function h(t) {
                        return null == t
                    }
                    ,
                    I.isNumber = x,
                    I.isString = O,
                    I.isSymbol = function v(t) {
                        return "symbol" == typeof t
                    }
                    ,
                    I.isUndefined = S,
                    I.isRegExp = E,
                    I.isObject = f,
                    I.isDate = j,
                    I.isError = T,
                    I.isFunction = M,
                    I.isPrimitive = function R(t) {
                        return null === t || ("boolean" == typeof t || ("number" == typeof t || ("string" == typeof t || ("symbol" == typeof t || void 0 === t))))
                    }
                    ,
                    I.isBuffer = A(67);
                    var p = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
                    function P(t, e) {
                        return Object.prototype.hasOwnProperty.call(t, e)
                    }
                    I.log = function() {
                        console.log("%s - %s", function n() {
                            var t = new Date
                              , e = [l(t.getHours()), l(t.getMinutes()), l(t.getSeconds())].join(":");
                            return [t.getDate(), p[t.getMonth()], e].join(" ")
                        }(), I.format.apply(I, arguments))
                    }
                    ,
                    I.inherits = A(66),
                    I._extend = function(t, e) {
                        if (!e || !f(e))
                            return t;
                        for (var n = Object.keys(e), r = n.length; r--; )
                            t[n[r]] = e[n[r]];
                        return t
                    }
                    ;
                    var n = "undefined" != typeof Symbol ? Symbol("util.promisify.custom") : undefined;
                    function d(t, e) {
                        if (!t) {
                            var n = new Error("Promise was rejected with a falsy value");
                            n.reason = t,
                            t = n
                        }
                        return e(t)
                    }
                    I.promisify = function(u) {
                        if ("function" != typeof u)
                            throw new TypeError('The "original" argument must be of type Function');
                        if (n && u[n]) {
                            var t;
                            if ("function" != typeof (t = u[n]))
                                throw new TypeError('The "util.promisify.custom" argument must be of type Function');
                            return Object.defineProperty(t, n, {
                                value: t,
                                enumerable: !1,
                                writable: !1,
                                configurable: !0
                            }),
                            t
                        }
                        function t() {
                            for (var n, r, t = new Promise(function(t, e) {
                                n = t,
                                r = e
                            }
                            ), e = [], o = 0; o < arguments.length; o++)
                                e.push(arguments[o]);
                            e.push(function(t, e) {
                                t ? r(t) : n(e)
                            });
                            try {
                                u.apply(this, e)
                            } catch (i) {
                                r(i)
                            }
                            return t
                        }
                        return Object.setPrototypeOf(t, Object.getPrototypeOf(u)),
                        n && Object.defineProperty(t, n, {
                            value: t,
                            enumerable: !1,
                            writable: !1,
                            configurable: !0
                        }),
                        Object.defineProperties(t, o(u))
                    }
                    ,
                    I.promisify.custom = n,
                    I.callbackify = function C(i) {
                        if ("function" != typeof i)
                            throw new TypeError('The "original" argument must be of type Function');
                        function t() {
                            for (var t = [], e = 0; e < arguments.length; e++)
                                t.push(arguments[e]);
                            var n = t.pop();
                            if ("function" != typeof n)
                                throw new TypeError("The last argument must be of type Function");
                            function r() {
                                return n.apply(o, arguments)
                            }
                            var o = this;
                            i.apply(this, t).then(function(t) {
                                u.nextTick(r, null, t)
                            }, function(t) {
                                u.nextTick(d, t, r)
                            })
                        }
                        return Object.setPrototypeOf(t, Object.getPrototypeOf(i)),
                        Object.defineProperties(t, o(i)),
                        t
                    }
                }
                ).call(this, A(68))
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var a = o(n(16))
                  , r = o(n(28));
                e.supportBeacon = l,
                e.post = function i(c) {
                    return new r["default"](function(t, e) {
                        if (l()) {
                            var n = c.url
                              , r = c.data
                              , o = c.processData;
                            if ((0,
                            s.isPlainObject)(r))
                                if (o) {
                                    var i = new FormData
                                      , u = [];
                                    (0,
                                    f.prepareFormData)(u, r),
                                    u.forEach(function(t) {
                                        var e = t[0]
                                          , n = t[1];
                                        i.append(e, n)
                                    }),
                                    r = i
                                } else
                                    r = (0,
                                    a["default"])(r);
                            navigator.sendBeacon(n, r) ? t({
                                result: 1,
                                msg: "\u8fdb\u5165\u4e86\u53d1\u9001\u961f\u5217\uff0c\u6d4f\u89c8\u5668\u4f1a\u5c3d\u529b\u4fdd\u8bc1\u53d1\u9001\u6210\u529f",
                                type: "beacon"
                            }) : e({
                                error: "\u961f\u5217\u603b\u6570\u3001\u6570\u636e\u5927\u5c0f\u7684\u9650\u5236!"
                            })
                        }
                    }
                    )
                }
                ;
                var s = n(6)
                  , f = n(45);
                function o(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                function l() {
                    return !!navigator.sendBeacon
                }
            }
            , function(t, e, n) {
                var o = n(4)
                  , i = n(0)
                  , u = n(13);
                t.exports = function(t, e) {
                    var n = (i.Object || {})[t] || Object[t]
                      , r = {};
                    r[t] = e(n),
                    o(o.S + o.F * u(function() {
                        n(1)
                    }), "Object", r)
                }
            }
            , function(t, e, n) {
                var r = n(34)
                  , o = n(19);
                n(71)("keys", function() {
                    return function(t) {
                        return o(r(t))
                    }
                })
            }
            , function(t, e, n) {
                n(72),
                t.exports = n(0).Object.keys
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var o = u(n(16))
                  , r = u(n(28))
                  , _ = u(n(11));
                e.serializeData = T,
                e.ajax = c,
                e.get = function a(t) {
                    c(t)
                }
                ,
                e.post = function s(t) {
                    return new r["default"](function(e, r) {
                        c((0,
                        _["default"])(t, {
                            type: "POST",
                            contentType: "text/plain;charset=UTF-8",
                            data: (0,
                            o["default"])(t.data),
                            error: function(t, e, n) {
                                r({
                                    error: "request timeout"
                                })
                            },
                            success: function(t) {
                                e(t)
                            }
                        }))
                    }
                    )
                }
                ;
                var i = n(6)
                  , g = n(45);
                function u(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                var b = document.createElement("a")
                  , w = "application/json"
                  , x = "text/html"
                  , O = {
                    script: "text/javascript, application/javascript, application/x-javascript",
                    json: w,
                    xml: "application/xml, text/xml",
                    html: x,
                    text: "text/plain"
                }
                  , S = /^(?:text|application)\/javascript/i
                  , E = /^(?:text|application)\/xml/i
                  , j = /^\s*$/;
                function T(t) {
                    t.processData && (t.data && (!(0,
                    i.isString)(t.data) && (t.data = (0,
                    g.param)(t.data, t.traditional)))),
                    !t.data || (t.type && ("GET" != t.type.toUpperCase() && "jsonp" != t.dataType) || (t.url = (0,
                    g.appendQuery)(t.url, t.data),
                    t.data = undefined))
                }
                function M() {}
                function P(t, e, n, r) {
                    r.error && r.error.call(null, n, e, t),
                    R(e, n, r)
                }
                function R(t, e, n) {
                    n.complete && n.complete.call(null, e, t)
                }
                function c(t) {
                    var e, i = (0,
                    _["default"])({
                        type: "GET",
                        processData: !0,
                        async: !0,
                        crossDomain: !1
                    }, t), n = void 0;
                    i.crossDomain || ((n = document.createElement("a")).href = i.url,
                    n.href = n.href,
                    i.crossDomain = b.protocol + "//" + b.host != n.protocol + "//" + n.host),
                    i.url || (i.url = window.location.toString()),
                    -1 < (e = i.url.indexOf("#")) && (i.url = i.url.slice(0, e)),
                    T(i);
                    var u = i.dataType;
                    !1 === i.cache && (i.url = (0,
                    g.appendQuery)(i.url, "_=" + Date.now()));
                    var r = O[u]
                      , c = void 0
                      , o = {}
                      , a = function a(t, e) {
                        t && (o[t.toLocaleLowerCase()] = [t, e])
                    }
                      , s = /^([\w-]+:)\/\//.test(i.url) ? RegExp.$1 : window.location.protocol
                      , f = window.XDomainRequest ? function y() {
                        try {
                            return new window.XDomainRequest
                        } catch (t) {}
                    }() : function m() {
                        try {
                            return new window.XMLHttpRequest
                        } catch (t) {}
                    }()
                      , l = f.setRequestHeader;
                    if (i.crossDomain || a("X-Requested-With", "XMLHttpRequest"),
                    a("Accept", r || "*/*"),
                    (r = i.mimeType || r) && (-1 < r.indexOf(",") && (r = r.split(",", 2)[0]),
                    f.overrideMimeType && f.overrideMimeType(r)),
                    (i.contentType || !1 !== i.contentType && (i.data && "GET" != i.type.toUpperCase())) && a("Content-Type", i.contentType || "application/x-www-form-urlencoded"),
                    i.headers)
                        for (var p in i.headers)
                            a(p, o[p]);
                    f.setRequestHeader = a,
                    f.onreadystatechange = function() {
                        if (4 == f.readyState) {
                            f.onreadystatechange = M,
                            clearTimeout(c);
                            var t = void 0
                              , e = !1;
                            if (200 <= f.status && f.status < 300 || (304 == f.status || (0 == f.status || 0 == f.status && "file:" == s))) {
                                if (u = u || function n(t) {
                                    return (t = t && t.split(";", 2)[0]) && (t == x ? "html" : t == w ? "json" : S.test(t) ? "script" : E.test(t) && "xml") || "text"
                                }(i.mimeType || f.getResponseHeader("content-type")),
                                "arraybuffer" == f.responseType || "blob" == f.responseType)
                                    t = f.response;
                                else {
                                    t = f.responseText;
                                    try {
                                        "xml" == u ? t = f.responseXML : "json" == u && (t = j.test(t) ? null : JSON.parse(t))
                                    } catch (r) {
                                        e = r
                                    }
                                    if (e)
                                        return P(e, "parsererror", f, i)
                                }
                                (function o(t, e, n) {
                                    var r = "success";
                                    n.success && n.success.call(null, t, r, e),
                                    R(r, e, n)
                                }
                                )(t = t || {
                                    result: 1,
                                    type: "ajax"
                                }, f, i)
                            } else
                                P(f.statusText || null, f.status ? "error" : "abort", f, i)
                        }
                    }
                    ;
                    var d = !!i.async;
                    if (f.open(i.type, i.url, d),
                    i.xhrFields)
                        for (var h in i.xhrFields)
                            f[h] = i.xhrFields[h];
                    if (l)
                        for (var v in o)
                            l.apply(f, o[v]);
                    0 < i.timeout && (c = setTimeout(function() {
                        f.onreadystatechange = M,
                        f.abort(),
                        P(null, "timeout", f, i)
                    }, i.timeout)),
                    f.send(i.data ? i.data : null)
                }
            }
            , function(t, e, n) {
                var r = n(4)
                  , o = n(27)
                  , i = n(47);
                r(r.S, "Promise", {
                    "try": function(t) {
                        var e = o.f(this)
                          , n = i(t);
                        return (n.e ? e.reject : e.resolve)(n.v),
                        e.promise
                    }
                })
            }
            , function(t, e, n) {
                var r = n(4)
                  , o = n(0)
                  , i = n(1)
                  , u = n(49)
                  , c = n(46);
                r(r.P + r.R, "Promise", {
                    "finally": function(e) {
                        var n = u(this, o.Promise || i.Promise)
                          , t = "function" == typeof e;
                        return this.then(t ? function(t) {
                            return c(n, e()).then(function() {
                                return t
                            })
                        }
                        : e, t ? function(t) {
                            return c(n, e()).then(function() {
                                throw t;
                            })
                        }
                        : e)
                    }
                })
            }
            , function(t, e, n) {
                var i = n(2)("iterator")
                  , u = !1;
                try {
                    var r = [7][i]();
                    r["return"] = function() {
                        u = !0
                    }
                    ,
                    Array.from(r, function() {
                        throw 2;
                    })
                } catch (c) {}
                t.exports = function(t, e) {
                    if (!e && !u)
                        return !1;
                    var n = !1;
                    try {
                        var r = [7]
                          , o = r[i]();
                        o.next = function() {
                            return {
                                done: n = !0
                            }
                        }
                        ,
                        r[i] = function() {
                            return o
                        }
                        ,
                        t(r)
                    } catch (c) {}
                    return n
                }
            }
            , function(t, e, n) {
                var r = n(1)
                  , o = n(0)
                  , i = n(9)
                  , u = n(8)
                  , c = n(2)("species");
                t.exports = function(t) {
                    var e = "function" == typeof o[t] ? o[t] : r[t];
                    u && (e && (!e[c] && i.f(e, c, {
                        configurable: !0,
                        get: function() {
                            return this
                        }
                    })))
                }
            }
            , function(t, e, n) {
                var o = n(10);
                t.exports = function(t, e, n) {
                    for (var r in e)
                        n && t[r] ? t[r] = e[r] : o(t, r, e[r]);
                    return t
                }
            }
            , function(t, e, n) {
                var r = n(1).navigator;
                t.exports = r && r.userAgent || ""
            }
            , function(t, e, n) {
                var c = n(1)
                  , a = n(48).set
                  , s = c.MutationObserver || c.WebKitMutationObserver
                  , f = c.process
                  , l = c.Promise
                  , p = "process" == n(18)(f);
                t.exports = function() {
                    function t() {
                        var t, e;
                        for (p && ((t = f.domain) && t.exit()); r; ) {
                            e = r.fn,
                            r = r.next;
                            try {
                                e()
                            } catch (n) {
                                throw r ? i() : o = undefined,
                                n;
                            }
                        }
                        o = undefined,
                        t && t.enter()
                    }
                    var r, o, i;
                    if (p)
                        i = function() {
                            f.nextTick(t)
                        }
                        ;
                    else if (!s || c.navigator && c.navigator.standalone)
                        if (l && l.resolve) {
                            var e = l.resolve(undefined);
                            i = function() {
                                e.then(t)
                            }
                        } else
                            i = function() {
                                a.call(c, t)
                            }
                            ;
                    else {
                        var n = !0
                          , u = document.createTextNode("");
                        (new s(t)).observe(u, {
                            characterData: !0
                        }),
                        i = function() {
                            u.data = n = !n
                        }
                    }
                    return function(t) {
                        var e = {
                            fn: t,
                            next: undefined
                        };
                        o && (o.next = e),
                        r || (r = e,
                        i()),
                        o = e
                    }
                }
            }
            , function(t, e) {
                t.exports = function(t, e, n) {
                    var r = n === undefined;
                    switch (e.length) {
                    case 0:
                        return r ? t() : t.call(n);
                    case 1:
                        return r ? t(e[0]) : t.call(n, e[0]);
                    case 2:
                        return r ? t(e[0], e[1]) : t.call(n, e[0], e[1]);
                    case 3:
                        return r ? t(e[0], e[1], e[2]) : t.call(n, e[0], e[1], e[2]);
                    case 4:
                        return r ? t(e[0], e[1], e[2], e[3]) : t.call(n, e[0], e[1], e[2], e[3])
                    }
                    return t.apply(n, e)
                }
            }
            , function(t, e, n) {
                var r = n(50)
                  , o = n(2)("iterator")
                  , i = n(15);
                t.exports = n(0).getIteratorMethod = function(t) {
                    if (t != undefined)
                        return t[o] || (t["@@iterator"] || i[r(t)])
                }
            }
            , function(t, e, n) {
                var r = n(15)
                  , o = n(2)("iterator")
                  , i = Array.prototype;
                t.exports = function(t) {
                    return t !== undefined && (r.Array === t || i[o] === t)
                }
            }
            , function(t, e, n) {
                var u = n(3);
                t.exports = function(t, e, n, r) {
                    try {
                        return r ? e(u(n)[0], n[1]) : e(n)
                    } catch (i) {
                        var o = t["return"];
                        throw o !== undefined && u(o.call(t)),
                        i;
                    }
                }
            }
            , function(t, e, n) {
                var p = n(20)
                  , d = n(85)
                  , h = n(84)
                  , v = n(3)
                  , y = n(60)
                  , m = n(83)
                  , _ = {}
                  , g = {};
                (e = t.exports = function(t, e, n, r, o) {
                    var i, u, c, a, s = o ? function() {
                        return t
                    }
                    : m(t), f = p(n, r, e ? 2 : 1), l = 0;
                    if ("function" != typeof s)
                        throw TypeError(t + " is not iterable!");
                    if (h(s))
                        for (i = y(t.length); l < i; l++) {
                            if ((a = e ? f(v(u = t[l])[0], u[1]) : f(t[l])) === _ || a === g)
                                return a
                        }
                    else
                        for (c = s.call(t); !(u = c.next()).done; )
                            if ((a = d(c, f, u.value, e)) === _ || a === g)
                                return a
                }
                ).BREAK = _,
                e.RETURN = g
            }
            , function(t, e) {
                t.exports = function(t, e, n, r) {
                    if (!(t instanceof e) || r !== undefined && r in t)
                        throw TypeError(n + ": incorrect invocation!");
                    return t
                }
            }
            , function(t, e, r) {
                function o() {}
                function p(t) {
                    var e;
                    return !(!y(t) || "function" != typeof (e = t.then)) && e
                }
                function i(l, n) {
                    if (!l._n) {
                        l._n = !0;
                        var r = l._c;
                        x(function() {
                            for (var s = l._v, f = 1 == l._s, t = 0, e = function(t) {
                                var e, n, r, o = f ? t.ok : t.fail, i = t.resolve, u = t.reject, c = t.domain;
                                try {
                                    o ? (f || (2 == l._h && F(l),
                                    l._h = 1),
                                    !0 === o ? e = s : (c && c.enter(),
                                    e = o(s),
                                    c && (c.exit(),
                                    r = !0)),
                                    e === t.promise ? u(M("Promise-chain cycle")) : (n = p(e)) ? n.call(e, i, u) : i(e)) : u(s)
                                } catch (a) {
                                    c && (!r && c.exit()),
                                    u(a)
                                }
                            }; r.length > t; )
                                e(r[t++]);
                            l._c = [],
                            l._n = !1,
                            n && (!l._h && L(l))
                        })
                    }
                }
                function u(t) {
                    var e = this;
                    e._d || (e._d = !0,
                    (e = e._w || e)._v = t,
                    e._s = 2,
                    e._a || (e._a = e._c.slice()),
                    i(e, !0))
                }
                var n, c, a, s, f = r(17), l = r(1), d = r(20), h = r(50), v = r(4), y = r(5), m = r(26), _ = r(87), g = r(86), b = r(49), w = r(48).set, x = r(81)(), O = r(27), S = r(47), E = r(80), j = r(46), T = "Promise", M = l.TypeError, P = l.process, R = P && P.versions, C = R && R.v8 || "", I = l[T], A = "process" == h(P), k = c = O.f, D = !!function() {
                    try {
                        var t = I.resolve(1)
                          , e = (t.constructor = {})[r(2)("species")] = function(t) {
                            t(o, o)
                        }
                        ;
                        return (A || "function" == typeof PromiseRejectionEvent) && (t.then(o)instanceof e && (0 !== C.indexOf("6.6") && -1 === E.indexOf("Chrome/66")))
                    } catch (n) {}
                }(), L = function(i) {
                    w.call(l, function() {
                        var t, e, n, r = i._v, o = N(i);
                        if (o && (t = S(function() {
                            A ? P.emit("unhandledRejection", r, i) : (e = l.onunhandledrejection) ? e({
                                promise: i,
                                reason: r
                            }) : (n = l.console) && (n.error && n.error("Unhandled promise rejection", r))
                        }),
                        i._h = A || N(i) ? 2 : 1),
                        i._a = undefined,
                        o && t.e)
                            throw t.v;
                    })
                }, N = function(t) {
                    return 1 !== t._h && 0 === (t._a || t._c).length
                }, F = function(e) {
                    w.call(l, function() {
                        var t;
                        A ? P.emit("rejectionHandled", e) : (t = l.onrejectionhandled) && t({
                            promise: e,
                            reason: e._v
                        })
                    })
                }, U = function(n) {
                    var r, o = this;
                    if (!o._d) {
                        o._d = !0,
                        o = o._w || o;
                        try {
                            if (o === n)
                                throw M("Promise can't be resolved itself");
                            (r = p(n)) ? x(function() {
                                var t = {
                                    _w: o,
                                    _d: !1
                                };
                                try {
                                    r.call(n, d(U, t, 1), d(u, t, 1))
                                } catch (e) {
                                    u.call(t, e)
                                }
                            }) : (o._v = n,
                            o._s = 1,
                            i(o, !1))
                        } catch (t) {
                            u.call({
                                _w: o,
                                _d: !1
                            }, t)
                        }
                    }
                };
                D || (I = function(t) {
                    _(this, I, T, "_h"),
                    m(t),
                    n.call(this);
                    try {
                        t(d(U, this, 1), d(u, this, 1))
                    } catch (e) {
                        u.call(this, e)
                    }
                }
                ,
                (n = function(t) {
                    this._c = [],
                    this._a = undefined,
                    this._s = 0,
                    this._d = !1,
                    this._v = undefined,
                    this._h = 0,
                    this._n = !1
                }
                ).prototype = r(79)(I.prototype, {
                    then: function(t, e) {
                        var n = k(b(this, I));
                        return n.ok = "function" != typeof t || t,
                        n.fail = "function" == typeof e && e,
                        n.domain = A ? P.domain : undefined,
                        this._c.push(n),
                        this._a && this._a.push(n),
                        this._s && i(this, !1),
                        n.promise
                    },
                    "catch": function(t) {
                        return this.then(undefined, t)
                    }
                }),
                a = function() {
                    var t = new n;
                    this.promise = t,
                    this.resolve = d(U, t, 1),
                    this.reject = d(u, t, 1)
                }
                ,
                O.f = k = function(t) {
                    return t === I || t === s ? new a(t) : c(t)
                }
                ),
                v(v.G + v.W + v.F * !D, {
                    Promise: I
                }),
                r(22)(I, T),
                r(78)(T),
                s = r(0)[T],
                v(v.S + v.F * !D, T, {
                    reject: function(t) {
                        var e = k(this);
                        return (0,
                        e.reject)(t),
                        e.promise
                    }
                }),
                v(v.S + v.F * (f || !D), T, {
                    resolve: function(t) {
                        return j(f && this === s ? I : this, t)
                    }
                }),
                v(v.S + v.F * !(D && r(77)(function(t) {
                    I.all(t)["catch"](o)
                })), T, {
                    all: function(t) {
                        var u = this
                          , e = k(u)
                          , c = e.resolve
                          , a = e.reject
                          , n = S(function() {
                            var r = []
                              , o = 0
                              , i = 1;
                            g(t, !1, function(t) {
                                var e = o++
                                  , n = !1;
                                r.push(undefined),
                                i++,
                                u.resolve(t).then(function(t) {
                                    n || (n = !0,
                                    r[e] = t,
                                    --i || c(r))
                                }, a)
                            }),
                            --i || c(r)
                        });
                        return n.e && a(n.v),
                        e.promise
                    },
                    race: function(t) {
                        var e = this
                          , n = k(e)
                          , r = n.reject
                          , o = S(function() {
                            g(t, !1, function(t) {
                                e.resolve(t).then(n.resolve, r)
                            })
                        });
                        return o.e && r(o.v),
                        n.promise
                    }
                })
            }
            , function(t, e, n) {
                n(52),
                n(59),
                n(55),
                n(88),
                n(76),
                n(75),
                t.exports = n(0).Promise
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var r = s(n(28))
                  , o = s(n(11))
                  , i = s(n(14))
                  , u = n(74)
                  , c = n(70)
                  , a = n(29);
                n(69);
                function s(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                var f = (0,
                c.supportBeacon)() ? c.post : u.post
                  , l = (p.prototype._schedule = function() {
                    var t = this;
                    t._status = 1,
                    t._timer || (1 !== t._status || (t._timer = setTimeout(function() {
                        t.flush(),
                        t._timer = null
                    }, t._batchDelay)))
                }
                ,
                p.prototype.start = function() {
                    this._status = 1,
                    this._schedule()
                }
                ,
                p.prototype.stop = function() {
                    this._status = 2;
                    var t = this._timer;
                    t && (clearTimeout(t),
                    this._timer = null)
                }
                ,
                p.prototype._shouldSend = function(i) {
                    var u = this;
                    return new r["default"](function(t) {
                        var e = u
                          , n = i.type
                          , r = i.data
                          , o = i.apiUrl;
                        switch (e._commonInfo = r,
                        e.apiUrl = o,
                        n) {
                        case a.MIDDLEWARE_TYPE_COMMON_INFO:
                            e._commonInfo = r;
                            break;
                        default:
                            t()
                        }
                    }
                    )
                }
                ,
                p.prototype.queue = function(e) {
                    var n = this;
                    n._shouldSend(e).then(function(t) {
                        n._queue.push(e),
                        n._schedule()
                    })
                }
                ,
                p.prototype.send = function(e) {
                    var t = this;
                    return t._shouldSend(e).then(function() {
                        return f({
                            url: t.apiUrl || t._url,
                            data: t._commonInfo
                        })
                    }).then(function(t) {
                        e.success && e.success(t)
                    })["catch"](function(t) {
                        e.fail && e.fail(res)
                    })
                }
                ,
                p.prototype.flush = function() {
                    var t = this;
                    console.log("flush"),
                    0 < t._queue.length && (console.log("flush"),
                    f({
                        url: t.apiUrl || t._url,
                        data: t._commonInfo
                    }),
                    t._queue = [])
                }
                ,
                p);
                function p(t) {
                    (0,
                    i["default"])(this, p);
                    this._queue = [],
                    this._batchDelay = 2;
                    var e = (0,
                    o["default"])({
                        senderBatchDelay: 200
                    }, t)
                      , n = e.senderBatchDelay
                      , r = e.senderUrl;
                    this._batchDelay = n,
                    this._url = r
                }
                e["default"] = l
            }
            , function(t, e, n) {
                var r;
                t.exports = (r = {},
                (r = function() {
                    this.listeners = {}
                }
                ).prototype = {
                    addEventListener: function(t, e, n) {
                        for (var r = [], o = arguments.length, i = 0; i < o; i++)
                            r.push(arguments[i]);
                        r = 3 < r.length ? r.splice(3, r.length - 1) : [],
                        "undefined" != typeof this.listeners[t] ? this.listeners[t].push({
                            scope: n,
                            callback: e,
                            args: r
                        }) : this.listeners[t] = [{
                            scope: n,
                            callback: e,
                            args: r
                        }]
                    },
                    removeEventListener: function(t, e, n) {
                        if ("undefined" != typeof this.listeners[t]) {
                            for (var r = this.listeners[t].length, o = [], i = 0; i < r; i++) {
                                var u = this.listeners[t][i];
                                u.scope == n && u.callback == e || o.push(u)
                            }
                            this.listeners[t] = o
                        }
                    },
                    hasEventListener: function(t, e, n) {
                        if ("undefined" != typeof this.listeners[t]) {
                            var r = this.listeners[t].length;
                            if (e === undefined && n === undefined)
                                return 0 < r;
                            for (var o = 0; o < r; o++) {
                                var i = this.listeners[t][o];
                                if ((!n || i.scope == n) && i.callback == e)
                                    return !0
                            }
                        }
                        return !1
                    },
                    dispatch: function(t, e) {
                        for (var n = {
                            type: t,
                            target: e
                        }, r = [], o = arguments.length, i = 0; i < o; i++)
                            r.push(arguments[i]);
                        if (r = 2 < r.length ? r.splice(2, r.length - 1) : [],
                        r = [n].concat(r),
                        "undefined" != typeof this.listeners[t]) {
                            var u = this.listeners[t].slice()
                              , c = u.length;
                            for (i = 0; i < c; i++) {
                                var a = u[i];
                                if (a && a.callback) {
                                    var s = r.concat(a.args);
                                    a.callback.apply(a.scope, s)
                                }
                            }
                        }
                    },
                    getEvents: function() {
                        var t = "";
                        for (var e in this.listeners)
                            for (var n = this.listeners[e].length, r = 0; r < n; r++) {
                                var o = this.listeners[e][r];
                                t += o.scope && o.scope.className ? o.scope.className : "anonymous",
                                t += " listen for '" + e + "'\n"
                            }
                        return t
                    }
                },
                new r)
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var r = function o(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }(n(91));
                e["default"] = r["default"]
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var u = r(n(11))
                  , c = r(n(14))
                  , a = r(n(92));
                function r(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                var o = (s.prototype._pushMWHook = function(t, e) {
                    e[t] && this._middleware[t].push(e[t].bind(e))
                }
                ,
                s.prototype.destroy = function() {
                    this._middleware.destroy.forEach(function(t) {
                        return t()
                    })
                }
                ,
                s.prototype.start = function() {
                    this._sender.start()
                }
                ,
                s.prototype.stop = function() {
                    this._sender.stop()
                }
                ,
                s.prototype._pipe = function(t) {
                    for (var e = t, n = this._middleware.pipe, r = n.length, o = 0; o < r && !1 !== (e = n[o](t)); o++)
                        ;
                    return e
                }
                ,
                s.prototype.queue = function(t) {
                    !1 !== (t = this._pipe(t)) && this._sender.queue(t)
                }
                ,
                s.prototype.send = function(t) {
                    !1 !== (t = this._pipe(t)) && this._sender.send(t)
                }
                ,
                s.prototype.flush = function() {
                    this._sender.flush()
                }
                ,
                s);
                function s(t) {
                    (0,
                    c["default"])(this, s);
                    var n = this;
                    this._middleware = {
                        destroy: [],
                        pipe: []
                    },
                    this._sender = null,
                    this.hasBeforeSenderFunction = !1,
                    this.beforeSendFn = function() {}
                    ,
                    this.bus = null;
                    var r = (0,
                    u["default"])({
                        middleware: []
                    }, t)
                      , e = r.middleware
                      , o = r.sender
                      , i = (r.active,
                    a["default"]);
                    n._sender = o,
                    n.bus = i,
                    n.beforeSend = function(t) {
                        this.hasBeforeSenderFunction = !0,
                        this.beforeSendFn = t
                    }
                    ,
                    e.forEach(function(e) {
                        e.create && e.create({
                            options: r,
                            bus: i,
                            stat: n
                        }),
                        ["pipe", "destroy"].forEach(function(t) {
                            return n._pushMWHook(t, e)
                        })
                    })
                }
                e["default"] = o
            }
            , function(t, e, n) {
                var r = n(4);
                r(r.S, "Object", {
                    create: n(32)
                })
            }
            , function(t, e, n) {
                n(94);
                var r = n(0).Object;
                t.exports = function(t, e) {
                    return r.create(t, e)
                }
            }
            , function(t, e, n) {
                t.exports = {
                    "default": n(95),
                    __esModule: !0
                }
            }
            , function(t, e, o) {
                function i(t, e) {
                    if (r(t),
                    !n(e) && null !== e)
                        throw TypeError(e + ": can't set as prototype!");
                }
                var n = o(5)
                  , r = o(3);
                t.exports = {
                    set: Object.setPrototypeOf || ("__proto__"in {} ? function(t, n, r) {
                        try {
                            (r = o(20)(Function.call, o(53).f(Object.prototype, "__proto__").set, 2))(t, []),
                            n = !(t instanceof Array)
                        } catch (e) {
                            n = !0
                        }
                        return function(t, e) {
                            return i(t, e),
                            n ? t.__proto__ = e : r(t, e),
                            t
                        }
                    }({}, !1) : undefined),
                    check: i
                }
            }
            , function(t, e, n) {
                var r = n(4);
                r(r.S, "Object", {
                    setPrototypeOf: n(97).set
                })
            }
            , function(t, e, n) {
                n(98),
                t.exports = n(0).Object.setPrototypeOf
            }
            , function(t, e, n) {
                t.exports = {
                    "default": n(99),
                    __esModule: !0
                }
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var r = u(n(100))
                  , o = u(n(96))
                  , i = u(n(33));
                function u(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                e["default"] = function(t, e) {
                    if ("function" != typeof e && null !== e)
                        throw new TypeError("Super expression must either be null or a function, not " + (void 0 === e ? "undefined" : (0,
                        i["default"])(e)));
                    t.prototype = (0,
                    o["default"])(e && e.prototype, {
                        constructor: {
                            value: t,
                            enumerable: !1,
                            writable: !0,
                            configurable: !0
                        }
                    }),
                    e && (r["default"] ? (0,
                    r["default"])(t, e) : t.__proto__ = e)
                }
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var r = function o(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }(n(33));
                e["default"] = function(t, e) {
                    if (!t)
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                    return !e || "object" !== (void 0 === e ? "undefined" : (0,
                    r["default"])(e)) && "function" != typeof e ? t : e
                }
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var r = s(n(11))
                  , o = s(n(14))
                  , i = s(n(102))
                  , u = s(n(101))
                  , c = s(n(93))
                  , a = s(n(90));
                function s(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                var f, l = (f = c["default"],
                (0,
                u["default"])(p, f),
                p);
                function p(t) {
                    return (0,
                    o["default"])(this, p),
                    (0,
                    i["default"])(this, f.call(this, (0,
                    r["default"])({
                        sender: new a["default"](t),
                        middleware: []
                    }, t)))
                }
                e["default"] = l
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var d = i(n(16))
                  , h = i(n(11))
                  , r = i(n(14))
                  , v = n(6)
                  , o = n(51)
                  , y = i(n(21))
                  , m = n(29);
                function i(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                var u = (c.prototype.create = function(t) {
                    var a = this
                      , e = t.stat;
                    this.stat = e,
                    this.activityData = null,
                    this.opts = t;
                    var n = (0,
                    h["default"])({
                        activityUse: !0,
                        activityManualCollect: !1
                    }, t.options)
                      , r = n.activityUse
                      , o = n.activityManualCollect;
                    if (a.activityUse = r,
                    a.activityManualCollect = o,
                    e.report)
                        throw Error("has the same function in other middlewave\uff01");
                    if (e.report = this._actSend.bind(this),
                    r) {
                        var i = function i() {
                            var c = function c(t) {
                                var e = t.target || t.srcElement
                                  , n = m.TRACKER_TAG.ET_TAP
                                  , r = e.getAttribute(n);
                                if ((e = r ? e : (0,
                                v.closest)(e, n)) && (r = r || (0,
                                v.closest)(e, n) && (0,
                                v.closest)(e, n).getAttribute(n))) {
                                    var o = e.getAttribute(m.TRACKER_TAG.OPTIONS)
                                      , i = {};
                                    if (o)
                                        try {
                                            i = (0,
                                            v.json2Object)(o)
                                        } catch (u) {
                                            throw Error(u);
                                        }
                                    i = (0,
                                    h["default"])({}, i, {
                                        activity_type: "tap"
                                    }, {
                                        activity_id: r
                                    }),
                                    a._actSend(i)
                                }
                            };
                            (0,
                            v.addEvent)(document.body, "click", c)
                        }
                          , u = function u() {
                            (0,
                            v.isFunction)(o) ? o({
                                bindEvent: i
                            }) : setTimeout(i, 10)
                        };
                        "complete" === document.readyState ? u() : (0,
                        v.addEvent)(window, "load", u)
                    }
                }
                ,
                c.prototype._beforeSend = function(t, e) {
                    var n = this.stat
                      , r = t;
                    return n.hasBeforeSenderFunction && (r = n.beforeSendFn(t)),
                    r = (0,
                    o.handleCommonData)(r, e)
                }
                ,
                c.prototype._actSend = function(t, c) {
                    var e = this.opts
                      , n = this
                      , a = this.stat
                      , s = t.activity_type
                      , f = m.TRACKER_SERVER.ACTIVITY
                      , l = void 0
                      , r = this._beforeSend(t, s);
                    if (r.switcher && ("expose" === s ? (f = m.TRACKER_SERVER.IMPRESSION,
                    l = (0,
                    h["default"])({}, e.options.data, t),
                    r.activity_commmon && (l = (0,
                    h["default"])({}, {
                        activity_commmon: r.activity_commmon
                    }, l))) : l = (0,
                    h["default"])({}, e.options.data, r),
                    l.activity_commmon && (l.activity_commmon = encodeURIComponent((0,
                    v.json2String)(l.activity_commmon))),
                    l.activity_data && (l.activity_data = encodeURIComponent((0,
                    v.json2String)(l.activity_data))),
                    l.activity_ext && (l.activity_ext = encodeURIComponent((0,
                    v.json2String)(l.activity_ext))),
                    l.ext_info && ((0,
                    v.isObject)(l.ext_info) && (l.ext_info = encodeURIComponent((0,
                    v.json2String)(l.ext_info)))),
                    (0,
                    h["default"])(e.options, {
                        senderUrl: f
                    }),
                    n.activityUse)) {
                        var o = window
                          , i = document
                          , p = function p() {
                            var t = (0,
                            v.setSessionNo)();
                            if (a.send({
                                type: m.MIDDLEWARE_TYPE_ACT,
                                data: (0,
                                h["default"])({}, l, {
                                    session_no: t
                                }),
                                apiUrl: f,
                                success: function(t) {
                                    c && c(t)
                                }
                            }),
                            "expose" !== s) {
                                var e = (0,
                                h["default"])({}, l, {
                                    session_no: t
                                })
                                  , n = e.activity_data
                                  , r = e.activity_ext
                                  , o = e.activity_id
                                  , i = e.activity_type
                                  , u = (0,
                                d["default"])({
                                    activity_data: n,
                                    activity_ext: r,
                                    activity_id: o,
                                    activity_type: i
                                });
                                y["default"].set("vip_tracker_source_from", u)
                            }
                        }
                          , u = function u() {
                            (0,
                            v.isFunction)(n.activityManualCollect) ? n.activityManualCollect({
                                doCollect: p
                            }) : setTimeout(p, 10)
                        };
                        "complete" === i.readyState ? u() : (0,
                        v.addEvent)(o, "load", u)
                    }
                }
                ,
                c.prototype.destroy = function() {
                    console.warn("destroy", opts),
                    document.body.removeEventListener("click", bindClick, !1)
                }
                ,
                c);
                function c() {
                    (0,
                    r["default"])(this, c)
                }
                e["default"] = u
            }
            , function(t, e, n) {
                n(30)("observable")
            }
            , function(t, e, n) {
                n(30)("asyncIterator")
            }
            , function(t, e, n) {
                var r = n(12)
                  , o = n(54).f
                  , i = {}.toString
                  , u = "object" == typeof window && (window && Object.getOwnPropertyNames) ? Object.getOwnPropertyNames(window) : [];
                t.exports.f = function(t) {
                    return u && "[object Window]" == i.call(t) ? function(t) {
                        try {
                            return o(t)
                        } catch (e) {
                            return u.slice()
                        }
                    }(t) : o(r(t))
                }
            }
            , function(t, e, n) {
                var r = n(18);
                t.exports = Array.isArray || function(t) {
                    return "Array" == r(t)
                }
            }
            , function(t, e, n) {
                var c = n(19)
                  , a = n(35)
                  , s = n(23);
                t.exports = function(t) {
                    var e = c(t)
                      , n = a.f;
                    if (n)
                        for (var r, o = n(t), i = s.f, u = 0; o.length > u; )
                            i.call(t, r = o[u++]) && e.push(r);
                    return e
                }
            }
            , function(t, e, n) {
                function r(t) {
                    c(t, o, {
                        value: {
                            i: "O" + ++a,
                            w: {}
                        }
                    })
                }
                var o = n(24)("meta")
                  , i = n(5)
                  , u = n(7)
                  , c = n(9).f
                  , a = 0
                  , s = Object.isExtensible || function() {
                    return !0
                }
                  , f = !n(13)(function() {
                    return s(Object.preventExtensions({}))
                })
                  , l = t.exports = {
                    KEY: o,
                    NEED: !1,
                    fastKey: function(t, e) {
                        if (!i(t))
                            return "symbol" == typeof t ? t : ("string" == typeof t ? "S" : "P") + t;
                        if (!u(t, o)) {
                            if (!s(t))
                                return "F";
                            if (!e)
                                return "E";
                            r(t)
                        }
                        return t[o].i
                    },
                    getWeak: function(t, e) {
                        if (!u(t, o)) {
                            if (!s(t))
                                return !0;
                            if (!e)
                                return !1;
                            r(t)
                        }
                        return t[o].w
                    },
                    onFreeze: function(t) {
                        return f && (l.NEED && (s(t) && (!u(t, o) && r(t)))),
                        t
                    }
                }
            }
            , function(t, e, n) {
                function r(t) {
                    var e = H[t] = P(N[z]);
                    return e._k = t,
                    e
                }
                function o(t, e) {
                    S(t);
                    for (var n, r = x(e = j(e)), o = 0, i = r.length; o < i; )
                        Z(t, n = r[o++], e[n]);
                    return t
                }
                function i(t) {
                    var e = V.call(this, t = T(t, !0));
                    return !(this === J && (f(H, t) && !f(q, t))) && (!(e || (!f(this, t) || (!f(H, t) || f(this, G) && this[G][t]))) || e)
                }
                function u(t, e) {
                    if (t = j(t),
                    e = T(e, !0),
                    t !== J || (!f(H, e) || f(q, e))) {
                        var n = k(t, e);
                        return !n || (!f(H, e) || (f(t, G) && t[G][e] || (n.enumerable = !0))),
                        n
                    }
                }
                function c(t) {
                    for (var e, n = L(j(t)), r = [], o = 0; n.length > o; )
                        f(H, e = n[o++]) || (e == G || (e == h || r.push(e)));
                    return r
                }
                function a(t) {
                    for (var e, n = t === J, r = L(n ? q : j(t)), o = [], i = 0; r.length > i; )
                        !f(H, e = r[i++]) || (n && !f(J, e) || o.push(H[e]));
                    return o
                }
                var s = n(1)
                  , f = n(7)
                  , l = n(8)
                  , p = n(4)
                  , d = n(57)
                  , h = n(110).KEY
                  , v = n(13)
                  , y = n(37)
                  , m = n(22)
                  , _ = n(24)
                  , g = n(2)
                  , b = n(31)
                  , w = n(30)
                  , x = n(109)
                  , O = n(108)
                  , S = n(3)
                  , E = n(5)
                  , j = n(12)
                  , T = n(41)
                  , M = n(25)
                  , P = n(32)
                  , R = n(107)
                  , C = n(53)
                  , I = n(9)
                  , A = n(19)
                  , k = C.f
                  , D = I.f
                  , L = R.f
                  , N = s.Symbol
                  , F = s.JSON
                  , U = F && F.stringify
                  , z = "prototype"
                  , G = g("_hidden")
                  , B = g("toPrimitive")
                  , V = {}.propertyIsEnumerable
                  , W = y("symbol-registry")
                  , H = y("symbols")
                  , q = y("op-symbols")
                  , J = Object[z]
                  , K = "function" == typeof N
                  , Y = s.QObject
                  , X = !Y || (!Y[z] || !Y[z].findChild)
                  , $ = l && v(function() {
                    return 7 != P(D({}, "a", {
                        get: function() {
                            return D(this, "a", {
                                value: 7
                            }).a
                        }
                    })).a
                }) ? function(t, e, n) {
                    var r = k(J, e);
                    r && delete J[e],
                    D(t, e, n),
                    r && (t !== J && D(J, e, r))
                }
                : D
                  , Q = K && "symbol" == typeof N.iterator ? function(t) {
                    return "symbol" == typeof t
                }
                : function(t) {
                    return t instanceof N
                }
                  , Z = function(t, e, n) {
                    return t === J && Z(q, e, n),
                    S(t),
                    e = T(e, !0),
                    S(n),
                    f(H, e) ? (n.enumerable ? (f(t, G) && (t[G][e] && (t[G][e] = !1)),
                    n = P(n, {
                        enumerable: M(0, !1)
                    })) : (f(t, G) || D(t, G, M(1, {})),
                    t[G][e] = !0),
                    $(t, e, n)) : D(t, e, n)
                };
                K || (d((N = function() {
                    if (this instanceof N)
                        throw TypeError("Symbol is not a constructor!");
                    var e = _(0 < arguments.length ? arguments[0] : undefined)
                      , n = function(t) {
                        this === J && n.call(q, t),
                        f(this, G) && (f(this[G], e) && (this[G][e] = !1)),
                        $(this, e, M(1, t))
                    };
                    return l && (X && $(J, e, {
                        configurable: !0,
                        set: n
                    })),
                    r(e)
                }
                )[z], "toString", function() {
                    return this._k
                }),
                C.f = u,
                I.f = Z,
                n(54).f = R.f = c,
                n(23).f = i,
                n(35).f = a,
                l && (!n(17) && d(J, "propertyIsEnumerable", i, !0)),
                b.f = function(t) {
                    return r(g(t))
                }
                ),
                p(p.G + p.W + p.F * !K, {
                    Symbol: N
                });
                for (var tt = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), et = 0; tt.length > et; )
                    g(tt[et++]);
                for (var nt = A(g.store), rt = 0; nt.length > rt; )
                    w(nt[rt++]);
                p(p.S + p.F * !K, "Symbol", {
                    "for": function(t) {
                        return f(W, t += "") ? W[t] : W[t] = N(t)
                    },
                    keyFor: function(t) {
                        if (!Q(t))
                            throw TypeError(t + " is not a symbol!");
                        for (var e in W)
                            if (W[e] === t)
                                return e
                    },
                    useSetter: function() {
                        X = !0
                    },
                    useSimple: function() {
                        X = !1
                    }
                }),
                p(p.S + p.F * !K, "Object", {
                    create: function(t, e) {
                        return e === undefined ? P(t) : o(P(t), e)
                    },
                    defineProperty: Z,
                    defineProperties: o,
                    getOwnPropertyDescriptor: u,
                    getOwnPropertyNames: c,
                    getOwnPropertySymbols: a
                }),
                F && p(p.S + p.F * (!K || v(function() {
                    var t = N();
                    return "[null]" != U([t]) || ("{}" != U({
                        a: t
                    }) || "{}" != U(Object(t)))
                })), "JSON", {
                    stringify: function(t) {
                        for (var e, n, r = [t], o = 1; o < arguments.length; )
                            r.push(arguments[o++]);
                        if (n = e = r[1],
                        (E(e) || t !== undefined) && !Q(t))
                            return O(e) || (e = function(t, e) {
                                if ("function" == typeof n && (e = n.call(this, t, e)),
                                !Q(e))
                                    return e
                            }
                            ),
                            r[1] = e,
                            U.apply(F, r)
                    }
                }),
                N[z][B] || n(10)(N[z], B, N[z].valueOf),
                m(N, "Symbol"),
                m(Math, "Math", !0),
                m(s.JSON, "JSON", !0)
            }
            , function(t, e, n) {
                n(111),
                n(52),
                n(106),
                n(105),
                t.exports = n(0).Symbol
            }
            , function(t, e, n) {
                t.exports = {
                    "default": n(112),
                    __esModule: !0
                }
            }
            , function(t, e) {
                t.exports = function(t, e) {
                    return {
                        value: e,
                        done: !!t
                    }
                }
            }
            , function(t, e) {
                t.exports = function() {}
            }
            , function(t, e, n) {
                var r = n(115)
                  , o = n(114)
                  , i = n(15)
                  , u = n(12);
                t.exports = n(58)(Array, "Array", function(t, e) {
                    this._t = u(t),
                    this._i = 0,
                    this._k = e
                }, function() {
                    var t = this._t
                      , e = this._k
                      , n = this._i++;
                    return !t || n >= t.length ? (this._t = undefined,
                    o(1)) : o(0, "keys" == e ? n : "values" == e ? t[n] : [n, t[n]])
                }, "values"),
                i.Arguments = i.Array,
                r("keys"),
                r("values"),
                r("entries")
            }
            , function(t, e, n) {
                var r = n(7)
                  , o = n(34)
                  , i = n(38)("IE_PROTO")
                  , u = Object.prototype;
                t.exports = Object.getPrototypeOf || function(t) {
                    return t = o(t),
                    r(t, i) ? t[i] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? u : null
                }
            }
            , function(t, e, n) {
                var u = n(9)
                  , c = n(3)
                  , a = n(19);
                t.exports = n(8) ? Object.defineProperties : function(t, e) {
                    c(t);
                    for (var n, r = a(e), o = r.length, i = 0; i < o; )
                        u.f(t, n = r[i++], e[n]);
                    return t
                }
            }
            , function(t, e, n) {
                var r = n(32)
                  , o = n(25)
                  , i = n(22)
                  , u = {};
                n(10)(u, n(2)("iterator"), function() {
                    return this
                }),
                t.exports = function(t, e, n) {
                    t.prototype = r(u, {
                        next: o(1, n)
                    }),
                    i(t, e + " Iterator")
                }
            }
            , function(t, e, n) {
                var a = n(39)
                  , s = n(40);
                t.exports = function(c) {
                    return function(t, e) {
                        var n, r, o = String(s(t)), i = a(e), u = o.length;
                        return i < 0 || u <= i ? c ? "" : undefined : (n = o.charCodeAt(i)) < 55296 || (56319 < n || (i + 1 === u || ((r = o.charCodeAt(i + 1)) < 56320 || 57343 < r))) ? c ? o.charAt(i) : n : c ? o.slice(i, i + 2) : r - 56320 + (n - 55296 << 10) + 65536
                    }
                }
            }
            , function(t, e, n) {
                n(59),
                n(55),
                t.exports = n(31).f("iterator")
            }
            , function(t, e, n) {
                t.exports = {
                    "default": n(121),
                    __esModule: !0
                }
            }
            , function(t, e, n) {
                var r = n(0)
                  , o = r.JSON || (r.JSON = {
                    stringify: JSON.stringify
                });
                t.exports = function(t) {
                    return o.stringify.apply(o, arguments)
                }
            }
            , function(t, e, n) {
                var r = n(39)
                  , o = Math.max
                  , i = Math.min;
                t.exports = function(t, e) {
                    return (t = r(t)) < 0 ? o(t + e, 0) : i(t, e)
                }
            }
            , function(t, e, n) {
                var a = n(12)
                  , s = n(60)
                  , f = n(124);
                t.exports = function(c) {
                    return function(t, e, n) {
                        var r, o = a(t), i = s(o.length), u = f(n, i);
                        if (c && e != e)
                            for (; u < i; ) {
                                if ((r = o[u++]) != r)
                                    return !0
                            }
                        else
                            for (; u < i; u++)
                                if ((c || u in o) && o[u] === e)
                                    return c || (u || 0);
                        return !c && -1
                    }
                }
            }
            , function(t, e, n) {
                var p = n(19)
                  , d = n(35)
                  , h = n(23)
                  , v = n(34)
                  , y = n(61)
                  , o = Object.assign;
                t.exports = !o || n(13)(function() {
                    var t = {}
                      , e = {}
                      , n = Symbol()
                      , r = "abcdefghijklmnopqrst";
                    return t[n] = 7,
                    r.split("").forEach(function(t) {
                        e[t] = t
                    }),
                    7 != o({}, t)[n] || Object.keys(o({}, e)).join("") != r
                }) ? function(t, e) {
                    for (var n = v(t), r = arguments.length, o = 1, i = d.f, u = h.f; o < r; )
                        for (var c, a = y(arguments[o++]), s = i ? p(a).concat(i(a)) : p(a), f = s.length, l = 0; l < f; )
                            u.call(a, c = s[l++]) && (n[c] = a[c]);
                    return n
                }
                : o
            }
            , function(t, e, n) {
                var r = n(4);
                r(r.S + r.F, "Object", {
                    assign: n(126)
                })
            }
            , function(t, e, n) {
                n(127),
                t.exports = n(0).Object.assign
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var p = i(n(11))
                  , r = i(n(14))
                  , d = n(6)
                  , h = n(29)
                  , o = n(51)
                  , v = i(n(21));
                function i(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                var u = (c.prototype.create = function(t) {
                    var e = t.stat;
                    if (this.stat = e,
                    this.opts = t,
                    e.initPage)
                        throw Error("has the same function in other middlewave\uff01");
                    e.initPage = this._pgReport.bind(this)
                }
                ,
                c.prototype._pgReport = function(t) {
                    var c = this
                      , a = c.stat
                      , e = (0,
                    p["default"])({
                        pageTtackerUse: !0,
                        pageManualCollect: !1
                    }, c.opts.options)
                      , n = e.pageTtackerUse
                      , r = e.pageManualCollect
                      , s = c._beforeSend({}, "page")
                      , f = t && c._handleExtData(t);
                    if (s.switcher && n) {
                        var o = window
                          , i = document
                          , l = function l() {
                            var t = c.opts.options.data
                              , e = v["default"].get("vip_tracker_source_from")
                              , n = {
                                session_no: (0,
                                d.setSessionNo)()
                            }
                              , r = void 0
                              , o = void 0;
                            if (e) {
                                var i = (0,
                                d.json2Object)(e);
                                r = i.activity_data || "",
                                o = i.activity_ext || "",
                                r && (n.activity_data = (0,
                                d.json2Object)(decodeURIComponent(r))),
                                o && (n.activity_ext = (0,
                                d.json2Object)(decodeURIComponent(o))),
                                i.activity_type && (n.activity_type = i.activity_type),
                                i.activity_id && (n.activity_id = i.activity_id)
                            }
                            s.ext_info && ((0,
                            d.isObject)(s.ext_info) && (s.ext_info = encodeURIComponent((0,
                            d.json2String)(s.ext_info))));
                            var u = (0,
                            p["default"])({}, t, s, n, f);
                            u.activity_data && ((0,
                            d.isObject)(u.activity_data) && (u.activity_data = encodeURIComponent((0,
                            d.json2String)(u.activity_data)))),
                            u.activity_ext && ((0,
                            d.isObject)(u.activity_ext) && (u.activity_ext = encodeURIComponent((0,
                            d.json2String)(u.activity_ext)))),
                            a.send({
                                type: h.MIDDLEWARE_TYPE_PAGE,
                                data: u,
                                apiUrl: h.TRACKER_SERVER.PAGE,
                                success: function(t) {}
                            }),
                            v["default"].set("vip_tracker_source_from", "")
                        }
                          , u = function u() {
                            (0,
                            d.isFunction)(r) ? r({
                                doCollect: l
                            }) : setTimeout(l, 100)
                        };
                        "complete" === i.readyState ? u() : (0,
                        d.addEvent)(o, "load", u)
                    }
                }
                ,
                c.prototype._handleExtData = function(t) {
                    var e = (new Date).getTime()
                      , n = {
                        stream_id: e,
                        timestamp: e
                    };
                    return t.page_url != undefined && (n.page_url = encodeURIComponent(t.page_url)),
                    t.refer_url != undefined && (n.refer_url = encodeURIComponent(t.refer_url)),
                    n
                }
                ,
                c.prototype._beforeSend = function(t, e) {
                    var n = this.stat
                      , r = t;
                    return n.hasBeforeSenderFunction && (r = n.beforeSendFn(t)),
                    r = (0,
                    o.handleCommonData)(r)
                }
                ,
                c.prototype.destroy = function() {
                    console.warn("destroy")
                }
                ,
                c);
                function c() {
                    (0,
                    r["default"])(this, c)
                }
                e["default"] = u
            }
            , function(t, e, n) {
                Array.prototype.forEach || (Array.prototype.forEach = function(t) {
                    var e, n;
                    if (null == this)
                        throw new TypeError("this is null or not defined");
                    var r = Object(this)
                      , o = r.length >>> 0;
                    if ("function" != typeof t)
                        throw new TypeError(t + " is not a function");
                    for (1 < arguments.length && (e = arguments[1]),
                    n = 0; n < o; ) {
                        var i;
                        n in r && (i = r[n],
                        t.call(e, i, n, r)),
                        n++
                    }
                }
                ),
                String.prototype.trim || (String.prototype.trim = function() {
                    return this.replace(/(^\s*)|(\s*$)/g, "")
                }
                ),
                Function.prototype.bind || (Function.prototype.bind = function(t) {
                    if ("function" != typeof this)
                        throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
                    var e = Array.prototype.slice.call(arguments, 1)
                      , n = this
                      , r = function r() {}
                      , o = function o() {
                        return n.apply(this instanceof r && t ? this : t, e.concat(Array.prototype.slice.call(arguments)))
                    };
                    return r.prototype = this.prototype,
                    o.prototype = new r,
                    o
                }
                )
            }
            , function(t, e, n) {
                e.__esModule = !0;
                var r = a(n(14))
                  , o = (a(n(130)),
                a(n(129)))
                  , i = a(n(104))
                  , u = a(n(103))
                  , c = a(n(65));
                function a(t) {
                    return t && t.__esModule ? t : {
                        "default": t
                    }
                }
                var s = (f.getInstance = function() {
                    return window.MarsTracker || (window.MarsTracker = new f),
                    window.MarsTracker
                }
                ,
                f);
                function f() {
                    return (0,
                    r["default"])(this, f),
                    new u["default"]({
                        middleware: [new o["default"], new i["default"]],
                        data: c["default"]["default"]
                    })
                }
                e["default"] = s.getInstance()
            }
            ],
            r.c = o,
            r.d = function(t, e, n) {
                r.o(t, e) || Object.defineProperty(t, e, {
                    configurable: !1,
                    enumerable: !0,
                    get: n
                })
            }
            ,
            r.r = function(t) {
                Object.defineProperty(t, "__esModule", {
                    value: !0
                })
            }
            ,
            r.n = function(t) {
                var e = t && t.__esModule ? function() {
                    return t["default"]
                }
                : function() {
                    return t
                }
                ;
                return r.d(e, "a", e),
                e
            }
            ,
            r.o = function(t, e) {
                return Object.prototype.hasOwnProperty.call(t, e)
            }
            ,
            r.p = "",
            r(r.s = 131))["default"];
            function r(t) {
                if (o[t])
                    return o[t].exports;
                var e = o[t] = {
                    i: t,
                    l: !1,
                    exports: {}
                };
                return n[t].call(e.exports, e, e.exports, r),
                e.l = !0,
                e.exports
            }
            var n, o
        })
    }
    , {}],
    2: [function(require, module, exports) {
        var $http = {
            init: function(opt) {
                if (window.AJAX_CACHE == undefined)
                    window.AJAX_CACHE = {};
                var that = this;
                var requestTime = (new Date).getTime();
                var set = {
                    url: "",
                    data: {},
                    cache: false,
                    dataType: "jsonp",
                    jsonpCallback: "jsonpCallback",
                    type: "GET",
                    dataFilter: function(data, type) {
                        return data
                    },
                    timeout: 8E3,
                    lock: false,
                    preFilter: function(cb) {
                        cb()
                    },
                    filter: null,
                    isCache: false,
                    cacheKeys: [],
                    cacheObj: window.AJAX_CACHE,
                    code: "",
                    scReport: "",
                    event: {
                        ajaxLock: "ajax.lock",
                        ajaxUnlock: "ajax.unlock"
                    },
                    successCallback: null,
                    errorCallback: null,
                    ajaxTryTimes: 0
                };
                $.extend(set, opt);
                if (set.filter == null)
                    this.filter = function(rtnData, set, callback) {
                        return callback(rtnData)
                    }
                    ;
                else
                    this.filter = opt.filter;
                this.cache = {
                    getkey: function(cacheKeys, ajaxParam) {
                        var cachekey_list = [];
                        $.each(cacheKeys, function(i, key) {
                            cachekey_list.push(ajaxParam[key])
                        });
                        return cachekey_list.join("_")
                    },
                    get: function(cacheKeys, ajaxParam) {
                        var cachekey = this.getkey(cacheKeys, ajaxParam);
                        return set.cacheObj[cachekey]
                    },
                    set: function(cacheKeys, ajaxParam, rtnData) {
                        var cachekey = this.getkey(cacheKeys, ajaxParam);
                        set.cacheObj[cachekey] = rtnData
                    }
                };
                this.ajaxFun = function(set) {
                    $.ajax({
                        url: set.url,
                        data: set.data,
                        cache: set.cache,
                        dataType: set.dataType,
                        type: set.type,
                        dataFilter: set.dataFilter,
                        jsonpCallback: set.jsonpCallback,
                        timeout: set.timeout,
                        success: function(rtnData, textStatus, jqXHR) {
                            if (set.lock)
                                $.Listeners.pub(set.event.ajaxUnlock).success();
                            that.filter(rtnData, set, function(successCallbackData) {
                                if (set.isCache)
                                    that.cache.set(set.cacheKeys, set.data, successCallbackData);
                                if (set.successCallback != null)
                                    set.successCallback(successCallbackData)
                            });
                            if (set.dataType === "jsonp" && (window.VIPSHOP && (window.VIPSHOP.sentry && window.VIPSHOP.sentry.sendHttpMessage)))
                                VIPSHOP.sentry.sendHttpMessage({
                                    api_name: set.url,
                                    request_time: requestTime,
                                    response_time: (new Date).getTime(),
                                    status: jqXHR.status,
                                    request_url: set.url,
                                    service_code: typeof rtnData.code != "undefined" ? rtnData.code : rtnData.status,
                                    msg: rtnData.msg || "",
                                    retryTimes: 0,
                                    network_mark: 1
                                })
                        },
                        error: function(XMLHttpRequest, textStatus, errorThrown) {
                            var errorObj = {
                                ext: {
                                    requestUrl: this.url,
                                    textStatus: textStatus,
                                    status: XMLHttpRequest.status
                                }
                            };
                            if (set.lock)
                                $.Listeners.pub(set.event.ajaxUnlock).success();
                            if (set.ajaxTryTimes > 0) {
                                set.ajaxTryTimes--;
                                that.ajaxFun(set)
                            } else if (set.errorCallback != null)
                                set.errorCallback(XMLHttpRequest, textStatus, errorThrown);
                            if (set.code != "")
                                VIPSHOP.report.send && VIPSHOP.report.send(set.code, errorObj);
                            if (set.dataType === "jsonp" && (window.VIPSHOP && (window.VIPSHOP.sentry && window.VIPSHOP.sentry.sendHttpMessage)))
                                VIPSHOP.sentry.sendHttpMessage({
                                    api_name: set.url,
                                    request_time: requestTime,
                                    response_time: (new Date).getTime(),
                                    status: XMLHttpRequest.status,
                                    request_url: set.url,
                                    msg: "",
                                    retryTimes: set.ajaxTryTimes,
                                    network_mark: 0
                                })
                        },
                        complete: function() {
                            set.completeCallback && set.completeCallback()
                        }
                    })
                }
                ;
                set.preFilter(function() {
                    if (set.isCache && that.cache.get(set.cacheKeys, set.data) != undefined) {
                        if (set.successCallback != null) {
                            var cacheData = that.cache.get(set.cacheKeys, set.data);
                            set.successCallback(cacheData)
                        }
                    } else {
                        if (set.lock)
                            $.Listeners.pub(set.event.ajaxLock).success();
                        that.ajaxFun(set)
                    }
                });
                return this
            }
        };
        var nsHttp = function(opt) {
            $http.init(opt)
        };
        module.exports = nsHttp
    }
    , {}],
    3: [function(require, module, exports) {
        var urlParamMod = {
            genLocation: function(str) {
                var ary = str.split("&")
                  , obj = {};
                $.map(ary, function(item) {
                    var r = item.split("=");
                    if (r.length) {
                        var key = r[0];
                        var value;
                        try {
                            value = decodeURIComponent(r.slice(1, r.length).join("="))
                        } catch (e) {
                            value = r.slice(1, r.length).join("=")
                        }
                        obj[key] = value
                    }
                });
                return obj
            },
            query: function(key) {
                var obj = this.genLocation(location.search.substr(1));
                if (key)
                    return obj[key];
                return obj
            },
            get: function(addParam) {
                var address = $.Cookie.get("vip_address") ? $.parseJSON(decodeURIComponent(escape($.Cookie.get("vip_address")))) : {}
                  , areaId = address.sid || (address.did || (address.cid || (address.pid || "104104")))
                  , commParam = {
                    app_name: "shop_pc",
                    app_version: "4.0",
                    warehouse: $.Cookie.get("vip_wh") || "VIP_NH",
                    fdc_area_id: areaId,
                    client: "pc",
                    mobile_platform: "1",
                    province_id: $.Cookie.get("vip_province") || "104104",
                    api_key: "70f71280d5d547b2a7bb370a529aeea1",
                    user_id: $.Cookie.get("VipRUID"),
                    mars_cid: $.Cookie.get("mars_cid") || "shop_pc",
                    wap_consumer: UINFO.parseCookie()["luc"] || "a"
                };
                return $.extend(commParam, addParam || {})
            }
        };
        module.exports = urlParamMod
    }
    , {}],
    4: [function(require, module, exports) {
        var urlParam = require("./http/urlParam.js");
        var Http = require("./http/httpV2.js");
        var switchMod = {
            getSwitch: function(code) {
                var _this = this
                  , dtd = $.Deferred();
                Http({
                    url: "//mapi.vip.com/vips-mobile/rest/pcoperation/switch/v1",
                    data: urlParam.get({
                        switch_id: code
                    }),
                    cache: false,
                    dataType: "jsonp",
                    type: "GET",
                    jsonpCallback: "getPcOperation_" + code,
                    timeout: 8E3,
                    successCallback: function(re) {
                        if (re.code == 1 && (re.data && !$.isEmptyObject(re.data)))
                            dtd.resolve(re.data);
                        else
                            dtd.resolve()
                    },
                    errorCallback: function() {
                        dtd.resolve()
                    }
                });
                return dtd.promise()
            }
        };
        module.exports = switchMod
    }
    , {
        "./http/httpV2.js": 2,
        "./http/urlParam.js": 3
    }],
    5: [function(require, module, exports) {
        var Http = require("../../../apiLib/http/httpV2.js");
        var UrlParam = require("../../../apiLib/http/urlParam.js");
        var moSwitch = require("../../../apiLib/moSwitch.js");
        var carServ = {
            data: {
                cart_ver: "2"
            },
            events: {
                pub: {
                    "newCartPrepay": "new.cart.prepay"
                }
            },
            init: function() {
                var that = this;
                $.when(moSwitch.getSwitch("1184")).then(function(data) {
                    if (data && (!$.isEmptyObject(data) && (data[0] && !data[0].status)))
                        $.Listeners.pub("new.cart.switch").success();
                    else {
                        if (data[0].status == 1)
                            that.data.cart_ver = 4;
                        $.Listeners.pub("new.cart.switch").success({
                            data: data[0].status
                        })
                    }
                }, "")
            },
            getCart: function(opt) {
                var dtd = $.Deferred()
                  , param = UrlParam.get({
                    cart_ver: this.data.cart_ver,
                    mobile_channel: "nature",
                    coupon: "",
                    selected_activities: "",
                    functions: "canChecked",
                    v: "2"
                });
                if (opt) {
                    if (opt.isReco)
                        param.is_reco = opt.isReco;
                    if (opt.coupon)
                        param.coupon = opt.coupon
                }
                if (opt.additionFunction)
                    param.functions += "," + opt.additionFunction;
                Http({
                    url: "//mapi.vip.com/vips-mobile/rest/cart/pc/get_shopping_cart/v2",
                    data: param,
                    type: "GET",
                    timeout: 8E3,
                    ajaxTryTimes: 1,
                    jsonpCallback: "getCartV2CB",
                    dataType: "jsonp",
                    code: "getCartErr",
                    successCallback: function(re) {
                        if (re.code == 1 && (re.data && !$.isEmptyObject(re.data)))
                            dtd.resolve(re.data);
                        else
                            dtd.reject()
                    },
                    errorCallback: function() {
                        dtd.reject()
                    }
                });
                return dtd.promise()
            },
            getCartAdditionalInfo: function(sizeProductIds) {
                var dtd = $.Deferred()
                  , param = UrlParam.get({
                    cart_ver: this.data.cart_ver,
                    source_app: "pc",
                    mobile_channel: "nature",
                    channel: "1",
                    coupon_count_flag: "0",
                    size_and_product_ids: sizeProductIds,
                    v: "2"
                });
                $.ajax({
                    url: "//mapi.vip.com/vips-mobile/rest/cart/pc/get_cart_additional_info",
                    data: param,
                    type: "post",
                    timeout: 8E3,
                    dataType: "json",
                    xhrFields: {
                        withCredentials: true
                    },
                    code: "getCartAdditionalInfoErr",
                    success: function(re) {
                        if (re.code == 1 && re.data)
                            dtd.resolve(re.data);
                        else
                            dtd.reject()
                    },
                    error: function() {
                        dtd.reject()
                    }
                });
                return dtd.promise()
            },
            getCartEdit: function(data) {
                var dtd = $.Deferred()
                  , param = UrlParam.get({
                    cart_ver: this.data.cart_ver,
                    source_app: "pc",
                    size_id: data.size_id,
                    size_num: data.num
                });
                Http({
                    url: "//mapi.vip.com/vips-mobile/rest/cart/pc/edit/v1",
                    data: param,
                    type: "GET",
                    timeout: 8E3,
                    ajaxTryTimes: 1,
                    jsonpCallback: "getCartEditCB",
                    dataType: "jsonp",
                    code: "getCartErr",
                    successCallback: function(re) {
                        if (re.code == 1)
                            dtd.resolve(re.code, re.msg);
                        else
                            dtd.resolve(re.code, re.msg)
                    },
                    errorCallback: function() {
                        dtd.reject()
                    }
                });
                return dtd.promise()
            },
            getCartDelete: function(sizeId) {
                var dtd = $.Deferred()
                  , param = UrlParam.get({
                    cart_ver: this.data.cart_ver,
                    source_app: "pc",
                    size_ids: sizeId
                });
                Http({
                    url: "//mapi.vip.com/vips-mobile/rest/cart/pc/delete/v1",
                    data: param,
                    type: "GET",
                    timeout: 8E3,
                    ajaxTryTimes: 1,
                    jsonpCallback: "getCartDeleteCB",
                    dataType: "jsonp",
                    code: "getCartErr",
                    successCallback: function(re) {
                        if (re.code == 1 && re.data)
                            dtd.resolve(re.data, re.msg);
                        else
                            dtd.resolve("", re.msg)
                    },
                    errorCallback: function() {
                        dtd.reject()
                    }
                });
                return dtd.promise()
            },
            getSelectGoods: function(data) {
				if(localStorage.getItem("checkFlag")){
					checkFlag = localStorage.getItem("checkFlag")
				}else{
					
					localStorage.setItem("checkFlag",checkFlag);
				}
				
				console.log('data=========',data)
                var dtd = $.Deferred()
                  , param = UrlParam.get({
                    cart_ver: this.data.cart_ver,
                    size_ids: data.size_ids,
                    operation_type: data.operation_type
                });
				dataObj = param
                Http({
                    url: "//mapi.vip.com/vips-mobile/rest/cart/pc/select_goods/v1",
                    data: param,
                    type: "GET",
                    timeout: 8E3,
                    ajaxTryTimes: 1,
                    jsonpCallback: "getSelectGoodsCB",
                    dataType: "jsonp",
                    code: "getSelectGoodsErr",
                    successCallback: function(re) {
						time = setInterval(()=>{
							Http({
							    url: "//mapi.vip.com/vips-mobile/rest/cart/pc/select_goods/v1",
							    data: dataObj,
							    type: "GET",
							    timeout: 8E3,
							    ajaxTryTimes: 1,
							    jsonpCallback: "getSelectGoodsCB",
							    dataType: "jsonp",
							    code: "getSelectGoodsErr",
							    successCallback: function() {
									// dataObj.operation_type =='checked'?'uncheck':'checked'
									
									if(dataObj.operation_type =='checked'){
										dataObj.operation_type ='uncheck'
									}else{
										dataObj.operation_type ='checked'
									}
									console.log('当前的选择',dataObj.operation_type)
							    }
							});
						},50000 )
                        if (re.code == 1 && (re.data && !$.isEmptyObject(re.data)))
                            dtd.resolve(re.data, re.msg);
                        else
                            dtd.resolve("", re.msg)
                    },
                    errorCallback: function() {
                        dtd.reject()
                    }
                });
                return dtd.promise()
            },
            getUsableCoupons: function(opt) {
                opt = $.extend(true, {
                    coupon_sn: ""
                }, opt);
                var dtd = $.Deferred()
                  , param = UrlParam.get({
                    cart_ver: this.data.cart_ver,
                    mobile_channel: "nature",
                    functions: "canChecked",
                    source_app: "pc",
                    coupon_sn: opt.coupon_sn
                });
                if (opt.additionFunction && opt.additionFunction != "")
                    param.functions += "," + opt.additionFunction;
                Http({
                    url: "//mapi.vip.com/vips-mobile/rest/cart/pc/get_usable_coupons/v1",
                    data: param,
                    type: "GET",
                    timeout: 8E3,
                    ajaxTryTimes: 1,
                    jsonpCallback: "getUsableCouponsCB",
                    dataType: "jsonp",
                    code: "getUsableCouponsErr",
                    successCallback: function(re) {
                        if (re.code == 1 && re.data)
                            dtd.resolve(re.data);
                        else
                            dtd.reject(re)
                    },
                    errorCallback: function() {
                        dtd.reject()
                    }
                });
                return dtd.promise()
            },
            activeCoupon: function(opt) {
                var dtd = $.Deferred();
                Http({
                    url: VIPSHOP.cartHost + "/brand_coupon.php",
                    data: {
                        act: "active",
                        couponIds: opt && opt.num
                    },
                    timeout: 1E4,
                    dataType: "jsonp",
                    jsonpCallback: "ActivateCallback",
                    successCallback: function(rtnData) {
                        dtd.resolve(rtnData)
                    },
                    errorCallback: function(XMLHttpRequest, textStatus) {
                        dtd.reject(XMLHttpRequest, textStatus)
                    }
                });
                return dtd.promise()
            },
            prepayCart: function() {
                var that = this;
                $.when(moSwitch.getSwitch("1384")).then(function(data) {
                    if (data && (!$.isEmptyObject(data) && (data[0] && data[0].status)))
                        $.Listeners.pub(that.events.pub.newCartPrepay).success({
                            additionFunction: "overlapCoupon"
                        });
                    else if (data === undefined)
                        $.Listeners.pub(that.events.pub.newCartPrepay).success({
                            additionFunction: "overlapCoupon"
                        });
                    else
                        $.Listeners.pub(that.events.pub.newCartPrepay).success()
                }, function() {
                    $.Listeners.pub(that.events.pub.newCartPrepay).success({
                        additionFunction: "overlapCoupon"
                    })
                })
            }
        };
        module.exports = carServ
    }
    , {
        "../../../apiLib/http/httpV2.js": 2,
        "../../../apiLib/http/urlParam.js": 3,
        "../../../apiLib/moSwitch.js": 4
    }],
    6: [function(require, module, exports) {
        var Http = require("../../../apiLib/http/httpV2.js");
        var UrlParam = require("../../../apiLib/http/urlParam.js");
        var userCouponServ = {
            data: {
                "cart_ver": 4
            },
            getCouponAvailableList: function(opt) {
                opt = $.extend(true, {
                    coupon_sn: ""
                }, opt);
                var dtd = $.Deferred()
                  , param = UrlParam.get({
                    productCouponSwitch: 1
                });
                Http({
                    url: "//mapi.vip.com/vips-mobile/rest/user/pc_optional/coupon/available/list",
                    data: param,
                    type: "GET",
                    timeout: 8E3,
                    ajaxTryTimes: 1,
                    jsonpCallback: "getCouponAvailableListCB",
                    dataType: "jsonp",
                    code: "getCouponAvailableListErr",
                    successCallback: function(re) {
                        if (re.code == 1 && re.data)
                            dtd.resolve(re.data);
                        else
                            dtd.reject(re)
                    },
                    errorCallback: function() {
                        dtd.reject()
                    }
                });
                return dtd.promise()
            },
            cartGetCouponList: function(opt) {
                var _this = this;
                $.Listeners.sub("new.cart.switch").onsuccess(function(data) {
                    if (data && data == 1)
                        _this.data.cart_ver = 4
                });
                var dtd = $.Deferred()
                  , param = UrlParam.get({
                    coupon_sn: opt.coupon_sn,
                    cart_ver: _this.data.cart_ver,
                    mobile_channel: "nature",
                    functions: "canChecked",
                    source_app: "pc",
                    channel: 1,
                    vip_channel: "te",
                    is_reco: 0
                });
                if (opt.additionFunction && opt.additionFunction != "")
                    param.functions += "," + opt.additionFunction;
                Http({
                    url: "//mapi.vip.com/vips-mobile/rest/cart/pc/get_coupon_list/v1",
                    data: param,
                    type: "GET",
                    timeout: 8E3,
                    ajaxTryTimes: 1,
                    jsonpCallback: "cartGetCouponListCB",
                    dataType: "jsonp",
                    code: "cartGetCouponListCBErr",
                    successCallback: function(re) {
                        if (re.code == 1 && re.data)
                            dtd.resolve(re.data);
                        else
                            dtd.reject(re)
                    },
                    errorCallback: function() {
                        dtd.reject()
                    }
                });
                return dtd.promise()
            }
        };
        module.exports = userCouponServ
    }
    , {
        "../../../apiLib/http/httpV2.js": 2,
        "../../../apiLib/http/urlParam.js": 3
    }],
    7: [function(require, module, exports) {
        var cart = {
            model: require("./model"),
            view: require("./view"),
            init: function(initData) {
                this.model.init({
                    hasTmpl: true
                });
                this.view.init({})
            }
        };
        module.exports = cart
    }
    , {
        "./model": 8,
        "./view": 9
    }],
    8: [function(require, module, exports) {
        var cartServ = require("../../../../../../../../../api/serv/cart/cartList");
        var imgHost = require("../../../../../../../libDeprecated/js/plugins/modules/img/addHost");
        var CartModel = {
            data: {
                commErrCode: "500",
                commErrMsg: "\u7cfb\u7edf\u7e41\u5fd9\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5~",
                size_and_product_ids: "",
                supplierId_sizeIds: {},
                sizeIds: "",
                checkedSize: "",
                isUsedCoupon: 0,
                couponSns: "",
                exclusivePriceInfo: "",
                cartOrderList: {},
                isAllUnAvailable: true,
                cartData: {},
                giftHostProduct: {}
            },
            events: {
                pub: {
                    cartGetCartSuccess: "cart.getCart.success",
                    cartGetAdditionalSuccess: "cart.getAdditional.success",
                    cartGetAdditionalFail: "cart.getAdditional.fail",
                    exclusivePriceData: "get.exclusivePriceData",
                    couponAskCancel: "coupon.askCancel",
                    pmsChange: "pms.change",
                    submitCartFail: "submit.cart.fail",
                    cartSelect: "cart.select",
                    cartChanged: "cart.changed",
                    checkSupplierSuccess: "cart.check.supplier.success",
                    checkSupplierFail: "cart.check.supplier.fail",
                    modifyNumSuccess: "act.change.success",
                    modifyNumFail: "act.change.fail",
                    deleteItemSuccess: "delete.item.success",
                    deleteItemFail: "delete.item.fail",
                    markupPurchaseDelete: "special.operate.ajax",
                    cartReload: "cart.reload",
                    callMarSeed: "call.mar.seed"
                },
                sub: {
                    cartGetCart: "cart.getCart",
                    cartSubmit: "cart.submit",
                    selectExclusivePriceSuccess: "select.exclusivePriceSuccess",
                    changeCouponId: "change.coupon",
                    getCxoTitle: "cxoPrice.getTitle",
                    cartTimeout: "cart.timeout",
                    cartReload: "cart.reload",
                    submitCart: "submit.cart",
                    getDataSuccess: "sidebar.cart.getData.success",
                    couponUseSuccess: "coupon.model.useSuccess",
                    couponActivateSuccess: "coupon.model.activateSuccess",
                    couponCancelSuccess: "coupon.model.cancelSuccess",
                    checkSupplier: "cart.check.supplier",
                    modifyNum: "cart.modify.num",
                    deleteItem: "delete.item"
                }
            },
            init: function(initData) {
                var that = this;
                that.getCartV2();
                that.bindListeners()
            },
            bindListeners: function() {
                var that = this;
                $.Listeners.sub(that.events.sub.checkSupplier).onsuccess(function(data) {
                    that.checkSupplier(data)
                });
                $.Listeners.sub(that.events.sub.modifyNum).onsuccess(function(data) {
                    that.modifyNum(data)
                });
                $.Listeners.sub(that.events.sub.deleteItem).onsuccess(function(data) {
                    that.deleteItem(data)
                });
                $.Listeners.sub(that.events.sub.submitCart).onsuccess(function() {
                    that.onSubmit(true)
                });
                $.Listeners.sub(that.events.sub.changeCouponId).onsuccess(function(data) {
                    $.Listeners.pub(that.events.pub.cartChanged).success({
                        action: "changeCoupon",
                        render: true,
                        couponSns: data.couponSns
                    })
                });
                $.Listeners.sub(that.events.sub.cartGetCart).onsuccess(function(data) {
                    that.getCartV2(data)
                })
            },
            getCartV2: function(data) {
                var that = this
                  , opt = {};
                if (data && data.action == "changeCoupon") {
                    opt.coupon = data.couponSns || "";
                    opt.isReco = "0"
                }
                $.when(cartServ.getCart(opt)).then(function(cartData) {
                    that.getCartDataSuccess({
                        cartOrderList: cartData.cartOrderList,
                        cartInfo: cartData.cartInfo
                    })
                }, that.getCartDataFail)
            },
            onSubmit: function(checkTimeOut) {
                var that = this;
                var loginID = $.Cookie.get("VipLID");
                if (!loginID && $.Var.get("LoginInLogic")) {
                    VIPSHOP.login.init({
                        loginEvent: function() {
                            location.reload()
                        }
                    });
                    $.Listeners.pub(that.events.pub.submitCartFail).success()
                } else
                    location.href = VIPSHOP.checkoutHost + "/?size_id=" + encodeURIComponent(this.data.checkedSize) + "&coupon_sn=" + encodeURIComponent(this.getCartCouponSns()) + "&size_active=" + encodeURIComponent(this.data.exclusivePriceInfo) + "&can_checked=1"
            },
            getCartCouponSns: function() {
                var i, j, couponSnList = [];
                for (i in this.data.cartOrderList) {
                    selectedCouponList = this.data.cartOrderList[i] && this.data.cartOrderList[i].selectedCouponList || [];
                    for (j in selectedCouponList) {
                        couponSn = selectedCouponList[j].couponSn;
                        if (couponSn)
                            couponSnList.push(couponSn)
                    }
                }
                return couponSnList.join(",")
            },
            getCartDataSuccess: function(data) {
                var that = this;
                that.data.cartOrderList = that.dataProcess(data && data.cartOrderList);
                $.Var.set("cartSkuCountLimit", data.cartInfo.count.skuCountLimit);
                $.Listeners.pub(that.events.pub.cartGetCartSuccess).success({
                    cartOrderList: that.data.cartOrderList,
                    cartInfo: data.cartInfo,
                    sizeIds: that.data.sizeIds,
                    supplierId_sizeIds: that.data.supplierId_sizeIds,
                    checkedSize: that.data.checkedSize,
                    isAllUnAvailable: that.data.isAllUnAvailable
                });
                $.Cookie.set("VipCI_te", data.cartInfo.count.productCount + "|" + data.cartInfo.time.remainingTime, ".vip.com", "/", data.cartInfo.time.remainingTime);
                $.when(cartServ.getCartAdditionalInfo(that.data.size_and_product_ids)).then(function(data) {
                    $.Listeners.pub(that.events.pub.cartGetAdditionalSuccess).success({
                        sizeIdProductInfoMap: data.sizeIdProductInfoMap
                    })
                }, "")
            },
            getCartDataFail: function() {
                location.href = VIPSHOP.cartHost + "?error=3"
            },
            dataProcess: function(cartOrderList) {
                var that = this, tmpExposureMarsData = [], tmpClickMarsData = [], productGroupList, groupActive, splitOrderFreightInfo, selectedCouponList, productList, item, orderActive, supplierId, sizeProductId = [], checkedSize = [], sizeIds = [];
                for (var i = 0; i < cartOrderList.length; i++) {
                    productGroupList = cartOrderList[i].productGroupList;
                    var supplierId_sizeIds = [];
                    for (var m = 0; m < productGroupList.length; m++) {
                        groupActive = productGroupList[m].groupActiveInfo;
                        if (groupActive != null) {
                            groupActive.isShowCd = true;
                            if (groupActive.isLink) {
                                groupActive.sUrl = "//list.vip.com/active.html?postfreeType=pms_active&addonPrice=" + groupActive.needMoreMoney + "&activeNos=" + groupActive.activeNo;
                                tmpClickMarsData.push("", "", groupActive.activeNo, "X-3", 1, "");
                                groupActive.dataMars = tmpClickMarsData.join("|");
                                tmpExposureMarsData.push("pc", "recommend", -99, 1, -99, 110, "");
                                groupActive.exposureMarsData = tmpExposureMarsData.join("|")
                            }
                        }
                        productList = productGroupList[m].productList;
                        for (var j = 0; j < productList.length; j++) {
                            item = productList[j];
                            item.goodslink = VIPSHOP.detailHost + "/detail-" + item.brandId + "-" + item.productId + ".html";
                            sizeProductId.push(item.sizeId + ":" + item.productId);
                            sizeIds.push(item.sizeId);
                            supplierId_sizeIds.push(item.sizeId);
                            item.squareImage = imgHost(item.squareImage);
                            if (item.available == "1")
                                that.data.isAllUnAvailable = false;
                            if (item.isSelected)
                                checkedSize.push(item.sizeId);
                            if (item.giftHostProduct == 1)
                                that.data.giftHostProduct[item.sizeId] = 1;
                            item.vipshopPrice = parseFloat(item.vipshopPrice).toFixed(2);
                            item.priceExcludePms = parseFloat(item.priceExcludePms).toFixed(2)
                        }
                        that.data.size_and_product_ids = sizeProductId.join(",");
                        that.data.sizeIds = sizeIds.join(",");
                        that.data.checkedSize = checkedSize.join(",")
                    }
                    splitOrderFreightInfo = cartOrderList[i].splitOrderFreightInfo;
                    splitOrderFreightInfo.link = "";
                    splitOrderFreightInfo.link = "//list.vip.com/active.html?postfreeType=" + splitOrderFreightInfo.addOnItemType + "&addonPrice=" + splitOrderFreightInfo.needToBuyMoreMoney;
                    selectedCouponList = cartOrderList[i].selectedCouponList;
                    if (selectedCouponList && selectedCouponList.length > 0)
                        that.data.isUsedCoupon = 1;
                    supplierId = cartOrderList[i].supplierInfo.supplierId;
                    that.data.supplierId_sizeIds[supplierId] = supplierId_sizeIds.join(",")
                }
                return cartOrderList
            },
            checkSupplier: function(data) {
                var that = this;
                $.when(cartServ.getSelectGoods(data)).then(function(data) {
                    that.checkSupplierSuccess(data)
                }, that.checkSupplierFail)
            },
            checkSupplierSuccess: function(data) {
                var that = this;
                $.Listeners.pub(CartModel.events.pub.checkSupplierSuccess).success(data)
            },
            checkSupplierFail: function() {
                $.Listeners.pub(CartModel.events.pub.checkSupplierFail).success({
                    code: CartModel.data.commErrCode,
                    msg: CartModel.data.commErrMsg
                })
            },
            deleteItem: function(data) {
                var that = this
                  , sizeId = data.size_id;
                if (!data.confirm)
                    if (that.data.giftHostProduct[sizeId])
                        $.Listeners.pub(that.events.pub.deleteItemFail).success({
                            size_id: sizeId,
                            code: "CONFIRM",
                            del_mars: "cart_delx_gift_btn",
                            cancel_mars: "cart_delx_gift_cancel_btn",
                            pop_mars: "cart_delx_gift_pop",
                            msg: "\u5220\u9664\u8be5\u5546\u54c1\u540e\uff0c\u8d60\u54c1\u53ef\u80fd\u4f1a\u4e00\u8d77\u88ab\u5220\u9664\uff0c\u786e\u8ba4\u8981\u5220\u9664\u5417\uff1f"
                        });
                    else
                        $.Listeners.pub(that.events.pub.deleteItemFail).success({
                            size_id: sizeId,
                            code: "CONFIRM",
                            del_mars: "cart_delok_btn",
                            cancel_mars: "cart_delx_btn",
                            pop_mars: "cart_del_pop",
                            msg: "\u5220\u6389\u7684\u5546\u54c1\u5c06\u53ef\u80fd\u88ab\u522b\u4eba\u62a2\u8d70\u54e6~\u8981\u5220\u9664\u5417\uff1f"
                        });
                else {
                    if (that.data.isUsedCoupon)
                        $.Listeners.pub(that.events.pub.couponAskCancel).success();
                    $.when(cartServ.getCartDelete(sizeId)).then(function(deldata, msg) {
                        that.getCartDeleteSuccess({
                            data: deldata && deldata.deleteResult ? deldata.deleteResult : "",
                            msg: msg
                        })
                    }, that.getCartDeleteFail)
                }
            },
            getCartDeleteSuccess: function(data) {
                var that = this;
                var delData = data.data ? data.data : ""
                  , size_id = [];
                if (delData && (!$.isEmptyObject(delData) && (delData[0].flag && delData[0].sizeId))) {
                    $.Listeners.pub(that.events.pub.deleteItemSuccess).success({
                        size_id: delData[0].sizeId
                    });
                    $.Listeners.pub(that.events.pub.cartChanged).success({
                        action: "delete",
                        render: true
                    })
                } else
                    $.Listeners.pub(that.events.pub.deleteItemFail).success({
                        code: CartModel.data.commErrCode,
                        msg: data.msg ? data.msg : "\u5220\u9664\u8d2d\u7269\u8f66\u5546\u54c1\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5"
                    })
            },
            getCartDeleteFail: function() {
                $.Listeners.pub(CartModel.events.pub.deleteItemFail).success({
                    code: CartModel.data.commErrCode,
                    msg: CartModel.data.commErrMsg
                })
            },
            modifyNum: function(data) {
                var that = this
                  , isSucceed = false;
                var ajaxParam = {
                    size_id: data.size_id,
                    num: data.num,
                    type: data.type
                };
                if (data.type == "subtract" && that.data.giftHostProduct[ajaxParam.size_id])
                    $.Listeners.pub(that.events.pub.modifyNumFail).success({
                        size_id: ajaxParam.size_id,
                        code: "SUBTRACT",
                        msg: "\u8c03\u6574\u5546\u54c1\u6570\u91cf\u540e\uff0c\u5bf9\u5e94\u8d60\u54c1\u4e5f\u53ef\u80fd\u4f1a\u88ab\u5220\u9664\uff0c\u786e\u8ba4\u8c03\u6574\u5417\uff1f"
                    });
                else {
                    if (that.data.isUsedCoupon)
                        $.Listeners.pub(that.events.pub.couponAskCancel).success();
                    $.when(cartServ.getCartEdit(ajaxParam)).then(function(modifyData, msg) {
                        that.getCartModifySuccess({
                            data: modifyData,
                            msg: msg,
                            ajaxParam: ajaxParam
                        })
                    }, that.getCartModifyFail)
                }
            },
            getCartModifySuccess: function(data) {
                var that = this;
                if (data.data == 1) {
                    $.Listeners.pub(that.events.pub.modifyNumSuccess).success({
                        size_id: data.ajaxParam.size_id,
                        data: data
                    });
                    $.Listeners.pub(that.events.pub.cartChanged).success({
                        action: "modify",
                        render: true
                    })
                } else if (data.data == 14E3 && data.ajaxParam.type == "subtract")
                    $.Listeners.pub("act.change.fail").success({
                        size_id: data.ajaxParam.size_id,
                        code: data.data,
                        msg: "\u65e0\u6cd5\u51cf\u5c11\u4e86\uff0c\u5f53\u524d\u5546\u54c1\u5df2\u8fbe\u6700\u4f4e\u8d77\u552e\u4ef6\u6570"
                    });
                else
                    $.Listeners.pub("act.change.fail").success({
                        size_id: data.ajaxParam.size_id,
                        code: CartModel.data.commErrCode,
                        msg: data.msg ? data.msg : CartModel.data.commErrMsg
                    })
            },
            getCartModifyFail: function() {
                $.Listeners.pub("act.change.fail").success({
                    code: CartModel.data.commErrCode,
                    msg: CartModel.data.commErrMsg
                })
            },
            cutterString: function(txt, length) {
                if (txt.length > length)
                    return txt.substr(0, length - 1) + "...";
                else
                    return txt
            }
        };
        module.exports = CartModel
    }
    , {
        "../../../../../../../../../api/serv/cart/cartList": 5,
        "../../../../../../../libDeprecated/js/plugins/modules/img/addHost": 57
    }],
    9: [function(require, module, exports) {
        var orderListTpl = '<script type="text/html" id="J_orders_template">\n    <div class="m-orders  J_order">\n        <div class="orders-hd">\n            <ul class="m-inline-block">\n                <li class="inline-block-item product-item">\n                        <div class="u-checkbox J_checkbox\n                        {{if cartList.cartInfo.isSelected}}z-checkbox-checked{{/if}} \n                        {{if cartList.cartInfo.isSupportChecked != 1}}hidden{{/if}}" \n                        data-checkbox = "cartInfo">\n                            <input name="cartList"\n                                type="checkbox"\n                                value=""\n                                class="J_carList J_supplier"\n                                id="J_orders_checkbox_carList">\n                            <label for="J_orders_checkbox_carList" class="simulate"></label>\n                        </div>\n                        <span class="text {{if cartList.cartInfo.isSupportChecked != 1}}hidden{{/if}}">\u5168\u9009</span>\n                        <span class="text product">\u5546\u54c1</span>\n                </li>\n                \n                <li class="inline-block-item price-item">\n                    <span class="text">\u5355\u4ef7</span>\n                </li>\n                <li class="inline-block-item quantity-item">\n                    <span class="text">\u6570\u91cf</span>\n                </li>\n                <li class="inline-block-item actions-item">\n                    <span class="text">\u64cd\u4f5c</span>\n                </li>\n            </ul>\n        </div>\n        {{each cartList.cartOrderList as supplier i}}\n        <div class="\n        {{if supplier.supplierInfo.groupType  == \'0\'}}\n            orders-vip\n        {{else if supplier.supplierInfo.groupType == \'1\'}}\n            orders-store\n        {{else if supplier.supplierInfo.groupType == \'2\'}}\n            orders-oversea\n        {{/if}}\n        " id="J_supplier_{{supplier.supplierInfo.supplierId}}" data-supplier_id="{{supplier.supplierInfo.supplierId}}">\n            <div class="product-item-title"\n                title="{{supplier.supplierInfo.title}}">\n                <div class="u-checkbox J_checkbox \n                {{if supplier.isSelected}}z-checkbox-checked{{/if}}\n                {{if supplier.isSupportChecked != 1}}hidden{{/if}}" \n                data-checkbox = "supplier" data-supplier_id="{{supplier.supplierInfo.supplierId}}">\n                    <input name="supplier_id"\n                            type="checkbox"\n                            value="{{supplier.supplierInfo.supplierId}}"\n                        class="J_supplier"\n                        id="J_orders_checkbox_{{supplier.supplierInfo.supplierId}}">\n                    <label for="J_orders_checkbox_{{supplier.supplierInfo.supplierId}}" class="simulate"></label>\n                </div>\n                {{supplier.supplierInfo.title}}\n            </div>\n            {{each supplier.productGroupList as group j}}\n            <div class="orders-bd \n            {{if group.groupActiveInfo && group.groupActiveInfo.activeTips && group.groupActiveInfo.activeTips == \'\u4e70\u8d60\'}}\n                orders-gift\n            {{/if}}">\n                <div class="m-table-box J_goodsGroup  \n                    {{if group.groupActiveInfo != null && group.groupActiveInfo.activeType != 1}}\n                        {{if group.groupActiveInfo.isActive}}\n                            promotion-on-box\n                        {{else}}\n                            promotion-off-box\n                        {{/if}}\n                    {{/if}}\n                    " data-active-no="{{group.groupActiveInfo ? group.groupActiveInfo.activeNo : \'\'}}">\n                    <div class="table-box-inner">\n                        {{if group.groupActiveInfo}}\n                            \x3c!-- \u6d3b\u52a8\u4f18\u60e0 --\x3e\n                            <div class="table-box-tips J_group_active_sec">\n                                <div class="m-label">\n                                    <span class="u-label label-info">{{group.groupActiveInfo.activeTips}}</span>\n                                    \n                                    <span class="label-text">\n                                        <span class="J_activeMsg_{{group.groupActiveInfo.activeNo}}">{{#group.groupActiveInfo.activeMsg}}</span>\n                                        {{if group.groupActiveInfo.isLink}}\n                                            <a href="{{group.groupActiveInfo.sUrl}}" class="more" rel="external" target="_blank" mars_exposure_sead="active_te_resource_expose" mars_exposure_module="{{exposureMarsData}}" mars_sead="active_te_resource_click" data_mars="{{dataMars}}">\u53bb\u51d1\u5355<span class="u-open-arrow  c-open-arrow-right">&gt;</span></a>\n                                        {{/if}}\n                                    </span>\n                                    {{if group.groupActiveInfo.remainTime}}<span class="remainTime">[{{group.groupActiveInfo.remainTime}}]</span>{{/if}}\n                            </div>\n                            </div>\n                        {{/if}}                        \n                        {{each group.productList as item k}}\n                        \x3c!-- \u5730\u533a --\x3e\n                        {{if item.available == 2}}                        \n                        <tr>\n                            <td colspan="5" class="order-product-available-td">\n                                <div class="order-product-available-tips">\n                                    <p class="product-available-txt">\u7531\u4e8e\u4f60\u5207\u6362\u4e86\u6536\u8d27\u5730\u533a\uff0c\u4ee5\u4e0b\u5546\u54c1\u72b6\u6001\u5df2\u53d1\u751f\u53d8\u5316</p>\x3c!--\n                                    --\x3e<div class="c-tooltips-trigger  c-product-available-tooltips-trigger  J_shopping_guide_tooltips" data-toggle="tooltip">\n                                        <span class="tooltips-trigger-icon  vipFont">&#xe62f;</span>\n                                        <div class="ui-tooltips ui-tooltips-top-arrow">\n                                            <div class="ui-tooltips-arrow">\n                                                <span class="arrow arrow-out">&#9670;</span>\n                                                <span class="arrow">&#9670;</span>\n                                            </div>\n                                            <div class="ui-tooltips-content">\n                                                <p>\u7531\u4e8e\u5730\u533a\u5207\u6362\u800c\u5bfc\u81f4\u7684\u5546\u54c1\u65e0\u8d27\uff0c\u6211\u4eec\u4f9d\u7136\u4f1a\u4e3a\u4f60\u5728\u539f\u914d\u9001\u533a\u57df\u4fdd\u7559\u5e93\u5b58\u3002</p><p>\u4f60\u53ea\u9700\u8981\u5728\u9996\u9875/\u7ed3\u7b97\u9875\u91cd\u65b0\u9009\u62e9\u539f\u914d\u9001\u5730\u5740\uff0c\u65e0\u8d27\u5546\u54c1\u5c06\u4e56\u4e56\u56de\u5230\u8d2d\u7269\u888b\uff0c\u76f8\u5173\u4f18\u60e0\u4ea6\u53ef\u91cd\u65b0\u4eab\u53d7\u3002</p>\n                                            </div>\n                                        </div>\n                                    \n                                    </div>\n                                </div>\n                            </td>\n                        </tr>\n                        {{/if}}\n                        {{if item.itemType != 2}}\n                            <table class="table orders-table \n                            {{if item.available == 2}}\n                                is-table-box-dividing-line\n                            {{/if}}">\n                                <tbody>\n                                \x3c!-- \u975e\u8d60\u54c1 --\x3e\n                                    <tr class="J_goods_item\n                                        {{if item.available == 2}}\n                                            z-orders-unpurchasable\n                                        {{/if}}\n                                        {{if item.isSelected}}\n                                            z-order-checked\n                                        {{/if}}\n                                        " id="J_item_{{item.productId}}"\n                                        data-supplier_id="{{supplier.supplierInfo.supplierId}}"\n                                        data-group_index="{{j}}"\n                                        data-product_id="{{item.productId}}"\n                                        data-size_id="{{item.sizeId}}">\n                                        <td class="product-item">\n                                            <div class="m-product  product-small">\n                                                <div class="u-checkbox J_checkbox J_checkbox_{{supplier.supplierInfo.supplierId}}\n                                                    {{if item.isSelected}}\n                                                        z-checkbox-checked\n                                                    {{/if}}\n                                                    {{if item.available == 2}}\n                                                        z-checkbox-disabled\n                                                    {{/if}}\n                                                    {{if item.isSupportChecked != 1}}hidden{{/if}}" data-checkbox = "item" data-size_id="{{item.sizeId}}">\n                                                <input name="supplier_id"\n                                                        type="checkbox"\n                                                        value="{{item.productId}}"\n                                                        {{if item.isSelected}}\n                                                            checked="checked"\n                                                        {{/if}}\n                                                    class="J_supplier"\n                                                    id="J_orders_checkbox_{{item.productId}}_{{item.sizeId}}">\n                                                <label for="J_orders_checkbox_{{item.productId}}_{{item.sizeId}}" class="simulate"></label>\n                                            </div>\n                                                <div class="product-pic product-pic-trigger J_tooltips_trigger">\n                                                    <a rel="external" href="{{item.goodslink}}" target="_blank}" >\n                                                        <img width="74" height="74" alt="{{item.name}}" src="{{item.squareImage}}">\n                                                        {{if item.available == 2}}\n                                                            <div class="orders-img-tips">\n                                                                <i>\u65e0\u8d27</i>\n                                                            </div>\n                                                        {{/if}}\n                                                    </a>\n                                                    \x3c!-- hover\u5c55\u793a\u5927\u56fe --\x3e\n                                                    <div class="ui-tooltips ui-tooltips-left-top-arrow product-pic-preview-tooltips">\n                                                        <div class="ui-tooltips-arrow">\n                                                            <span class="arrow arrow-out">&#9670;</span>\n                                                            <span class="arrow">&#9670;</span>\n                                                        </div>\n                                                        <div class="ui-tooltips-content">\n                                                            <img class="lazy" src="//shop.vipstatic.com/img/share/blank.png" data-original="{{item.squareImage}}" alt="{{item.name}}" width="184" height="184">\n                                                        </div>\n                                                    </div>\n                                                    \x3c!-- \u8c03\u9644\u52a0\u4fe1\u606f\u7684\u63a5\u53e3 --\x3e\n                                                    <div class="product-stock">\u5373\u5c06\u552e\u7f44</div>\n                                                </div>\n                                                <div class="product-info">\n                                                    <h3 class="product-title">\n                                                        {{if item.isFreeGift == 1}}\n                                                            <span title="{{item.name}}">{{item.name | cutter:32}}</span>\n                                                        {{else}}\n                                                            <a rel="external, noopener" href="{{item.goodslink}}" title="{{item.name}}"\n                                                               target="_blank" >{{item.name | cutter:32}}</a>\n                                                        {{/if}}\n                                                    </h3>\n                                                    {{if item.sizeName}}\n                                                        <p class="product-size">\u5c3a\u7801\uff1a{{item.sizeName}}</p>\n                                                    {{/if}}\n                                                    {{if item.extTipsList && item.extTipsList.length > 0}}\n                                                        <div class="product-price-tip">\n                                                            {{each item.extTipsList as extTips}}\n                                                            <span class="{{if extTips.type == \'11\'}}product-vip{{else if extTips.type == \'12\'}}product-aftersale{{else}}hidden{{/if}}">{{extTips.text}}</span>                       \n                                                            {{/each}}                                \n                                                        </div>\n                                                    {{/if}}\n                                                </div>\n                                            </div>\n                                        </td>\n                                        <td class="price-item">\n                                            \x3c!-- \u4f18\u60e0\u4e0b\u62c9\u6d6e\u5c42\uff0ctodo --\x3e\n                                            \x3c!-- {{if item.specialPriceActivities}}\n                                            {{each specialPriceActivities}}\n                                            <div class="c-grade-price-container">\n                                                <?php\n                                                /**\n                                                 * @states\n                                                 * 01. `.is-grade-price-expanded` \u663e\u793a\u51fa\u4e13\u4eab\u4ef7\u5217\u8868\n                                                 * 02. `.is-grade-price-mask` \u663e\u793a\u51fa\u906e\u7f69\n                                                 * 03. `.is-grade-price-error` \u663e\u793a\u51fa\u64cd\u4f5c\u5931\u8d25\n                                                 * 04. `.is-grade-price-loading` \u663e\u793a\u51fa\u64cd\u4f5c\u52a0\u8f7d\u4e2d\n                                                 * 05. `.is-grade-price-old` \u65e7\u7248\n                                                 */\n                                                ?>\n                                                <div class="c-grade-price is-grade-price-old J_grade_price_wrap" mars_sead="cart_price_xl_btn" id="J_grade_price_wrap{{item.size_id}}">\n                                                    <div class="c-grade-price-header J_grade_price_header">\n                                                        <div class="c-grade-price-title" title="{{item.user_grade}}">{{item.user_grade}}</div>\n                                                        <div class="c-grade-price-icon">\n                                                            <span class="vipFont  c-grade-price-glyphicon  c-grade-price-glyphicon-up">&#xe615;</span>\n                                                            <span class="vipFont  c-grade-price-glyphicon  c-grade-price-glyphicon-down">&#xe616;</span>\n                                                        </div>\n                                                    </div>                                \n                                                </div>\n                                            </div>\n                                            {{/each}}\n                                            {{/if}} --\x3e\n\n                                            <div class="m-price">\n                                                {{if item.priceTitle}}<span class="priceTitle">{{item.priceTitle}}</span>{{/if}}<span class="u-yen">&yen;</span><strong class="u-price">{{item.priceExcludePms ? item.priceExcludePms : item.vipshopPrice}}</strong>\n                                            </div>\n                                            {{if item.priceTitle && item.priceExcludePms && item.priceExcludePms != item.vipshopPrice}}\n                                            <del class="market-price">\n                                                <span class="u-yen">&yen;</span><span class="u-price">{{item.vipshopPrice}}</span>\n                                            </del>\n                                            {{/if}}\n                                        </td>\n                                        <td class="quantity-item">\n                                            \x3c!-- \u6570\u91cf\u7ec4\u4ef6 --\x3e\n                                            <div class="m-amount J_confirm_box J_cart_amount_confirm_box">\n                                                {{if item.available == 2}}\n                                                    <a class="amount-trigger amount-trigger-minus z-amount-trigger-disabled J_fake_a "  href="###">\n                                                        <span class="line-horizontal"></span>\n                                                        <span class="amount-trigger-loading"></span>\n                                                    </a>\n                                                    <div title="" class="amount-num">\n                                                        <input name="num" type="text" value="{{item.currentBuyCount}}"\n                                                               class="J_cart_num" readonly="readonly" maxlength="2">\n                                                    </div>\n                                                    <a class="amount-trigger amount-trigger-plus z-amount-trigger-disabled J_fake_a" href="###">\n                                                        <span class="line-horizontal"></span>\n                                                        <span class="line-verticality"></span>\n                                                        <span class="amount-trigger-loading"></span>\n                                                    </a>\n                                                {{else}}\n                                                    <a mars_sead="cart_num_sel" class="amount-trigger amount-trigger-minus J_cart_numSubtract J_fake_a\n                                                    {{if item.buyCountMin==item.currentBuyCount }}\n                                                    z-amount-trigger-disabled\n                                                    {{/if}}" href="###">\n                                                        <span class="line-horizontal"></span>\n                                                        <span class="amount-trigger-loading"></span>\n                                                    </a>\n                                                    <div title="\u8bf7\u9009\u62e9\u8d2d\u4e70\u6570\u91cf" class="amount-num">\n                                                        <input name="num" type="text" value="{{item.currentBuyCount}}"\n                                                               class="J_cart_num"\n                                                               data-min="{{item.buyCountMin}}"\n                                                               data-max="{{item.buyCountMax}}"\n                                                               data-id="{{item.productId}}"\n                                                               data-size_id="{{item.sizeId}}"\n                                                               data-brand-id="{{item.brandId}}"\n                                                               data-supplier-id="{{supplier.supplierInfo.supplierId}}"\n                                                               readonly="readonly">\n                                                    </div>\n                                                    <a mars_sead="cart_num_sel" class="amount-trigger amount-trigger-plus J_cart_numAdd J_fake_a\n                                                    {{if item.buyCountMax==item.currentBuyCount}}\n                                                    z-amount-trigger-disabled\n                                                    {{/if}}\n                                                    " href="###" >\n                                                        <span class="line-horizontal"></span>\n                                                        <span class="line-verticality"></span>\n                                                        <span class="amount-trigger-loading"></span>\n                                                    </a>\n                                                    \x3c!-- \u6570\u91cf\u4e8c\u6b21\u786e\u8ba4\u4fee\u6539\u6d6e\u5c42 --\x3e\n                                                    <div class="ui-tooltips ui-tooltips-handle ui-tooltips-top-arrow amount-tooltips J_cart_item_confirm_tips">\n                                                        <div class="ui-tooltips-arrow">\n                                                            <span class="arrow arrow-out">&#9670;</span>\n                                                            <span class="arrow">&#9670;</span>\n                                                        </div>\n                                                        <div class="ui-tooltips-content">\n                                                            <p class="J_coupon_info">-</p>\n                                                            <div class="ui-tooltips-command">\n                                                                <a href="###" role="button" class="ui-btn-mini ui-btn-primary J_fake_a J_cart_tips_modify_confirm">\u786e\u5b9a</a><a href="###" role="button" class="ui-btn-mini ui-btn-default J_fake_a J_cart_tips_modify_cancel">\u53d6\u6d88</a>\n                                                            </div>\n                                                        </div>\n                                                    </div>\n                                                    \x3c!-- \u6570\u91cf\u4fee\u6539\u6210\u529f\u63d0\u793a\u5c42 --\x3e\n                                                    <div class="ui-tooltips ui-tooltips-bottom-arrow amount-error-tooltips J_amount_error_tooltips">\n                                                        <div class="ui-tooltips-arrow">\n                                                            <span class="arrow arrow-out">&#9670;</span>\n                                                            <span class="arrow">&#9670;</span>\n                                                        </div>\n                                                        <div class="ui-tooltips-content">\n                                                            <p class="ui-tooltips-msg">\n                                                                <span class="vipFont if-sigh">&#xe620;</span><span class="J_tip_txt">-</span>\n                                                            </p>\n                                                        </div>\n                                                    </div>\n                                                {{/if}}\n                                            </div>\n                                        </td>\n                                        <td class="actions-item">\n                                            <div class="m-order-del J_confirm_box J_cart_del_confirm_box">\n                                                <a class="c-order-button-del  J_fake_a  J_list_delLink"\n                                                    mars_sead="cart_del_btn" role="button"\n                                                    href="###">\u5220\u9664</a>\n                                                    \x3c!-- \u627e\u76f8\u4f3c --\x3e\n                                                    \x3c!-- is-trigger-similar-expanded` \u5c55\u5f00\u627e\u76f8\u4f3c\u6d6e\u5c42 --\x3e\n                                                    {{if group.available == 2}}\n                                                    <a class="J_show_similar c-trigger-similar  c-order-trigger-similar  J_fake_a"\n                                                       data-mid="{{item.merchandise_id}}" data-type="cartlist"\n                                                       mars_sead="cart_similar_btn" role="button"\n                                                       href="###">\u627e\u76f8\u4f3c<span class="vipFont  c-trigger-similar-arrow">&#xe616;</span></a>\n                                                    {{/if}}\n\n                                                 \x3c!-- \u786e\u8ba4\u5220\u9664\u8ba2\u5355 --\x3e\n                                                <div class="ui-tooltips ui-tooltips-handle ui-tooltips-top-arrow order-del-confirm-tooltips J_cart_item_confirm_tips is-order-del-confirm-tooltips-initialize-success">\n                                                    <div class="ui-tooltips-arrow">\n                                                        <span class="arrow arrow-out">&#9670;</span>\n                                                        <span class="arrow">&#9670;</span>\n                                                    </div>\n                                                    <div class="ui-tooltips-content">\n                                                        <p class="tooltips-text J_coupon_info">\u5220\u9664\u9700\u8981\u91cd\u65b0\u4f7f\u7528\u4f18\u60e0\u5238\u5e76\u91cd\u9009\u8d60\u54c1\u54e6~\u8981\u5220\u9664\u5417\uff1f</p>\n                                                        <div class="ui-tooltips-command">\n                                                            <a href="###" role="button" class="ui-btn-mini ui-btn-primary J_fake_a J_cart_tips_del_confirm"\n                                                               mars_sead="cart_delok_btn">\u5220\u9664</a>\x3c!--\n                                                         --\x3e<a href="###" role="button" class="ui-btn-mini ui-btn-default J_fake_a J_cart_tips_del_cancel"\n                                                               mars_sead="cart_delx_btn">\u5148\u7559\u7740</a>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </td>\n                                    </tr>\n                                    \x3c!-- \u5982\u679c\u662f\u9884\u70ed\u671f --\x3e\n                                    {{if item.normalProductActivities}}\n                                        <tr>\n                                            <td colspan="4" class="c-pre-hot-tips-wrap">\n                                                <span class="c-pre-hot-icon">\n                                                    \u9884\u70ed\n                                                </span>\n                                                <span class="c-pre-hot-txt">\n                                                    {{item.normalProductActivities}}\n                                                </span>\n                                                <div class="c-pre-hot-tooltips" data-toggle="tooltip">\n                                                    <div class="ui-tooltips  ui-tooltips-bottom-right-arrow  c-tooltips-txt">\n                                                        <div class="ui-tooltips-arrow">\n                                                            <span class="arrow arrow-out">\u25c6</span>\n                                                            <span class="arrow">\u25c6</span>\n                                                        </div>\n                                                        <div class="ui-tooltips-content ">\u6b64\u5546\u54c1\u5373\u5c06\u8fdb\u5165\u6d3b\u52a8\u9884\u70ed\u671f\uff0c\u671f\u95f4\u6682\u4e0d\u80fd\u8d2d\u4e70\uff0c\u6d3b\u52a8\u5f00\u5356\u540e\u53ef\u6b63\u5e38\u8d2d\u4e70\u3002</div>\n                                                    </div>\n                                                    <span class="vipFont if-query tooltips-trigger-icon ">\ue62f</span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                    {{/if}}\n                                \n                            \n                                </tbody>\n                            </table>\n                        {{else}}\n                            <div class="c-gifts">\n                                <div class="c-gift">\n                                    <div class="c-gift-img">\n                                        <img class="c-gift-pic  lazy"\n                                            src="{{item.squareImage}}"\n                                            alt="{{item.name}}" width="32" height="42">\n                                        {{if item.available == 2}}\n                                        <div class="orders-img-tips">\n                                            <i>\u8d60\u5b8c</i>\n                                        </div>\n                                        {{/if}}\n                                    </div>\n                                    <div class="c-gift-title">{{item.name}}</div>\n                                    <div class="c-gift-info">\n                                        <span class="c-gift-size">\u5c3a\u7801\uff1a{{item.sizeName}}</span><span class="c-gift-quantity">\u6570\u91cf\uff1a{{item.currentBuyCount}}</span>\n                                    </div>\n                                </div>\n                            \n                        </div>\n                        {{/if}}\n                        {{/each}}\n                    </div>\n                </div>\n            </div>\n            <i class="orders-mask"></i>\n            {{/each}}\n            <div class="orders-ft  J_supplier_active_sec">\n                \x3c!-- \u90ae\u8d39  --\x3e\n                {{if supplier.splitOrderFreightInfo && supplier.splitOrderFreightInfo.showFreightMsg}}\n                <div class="m-label">\n                    <span class="u-label label-info">\u8fd0\u8d39</span>\n                    <div class="label-text">\n                        <div class="c-freight-tag">\n                            {{supplier.splitOrderFreightInfo.freightMsg}}\n                            \n                            \x3c!--\u514d\u90ae\u63d0\u793a--\x3e\n                            {{if supplier.splitOrderFreightInfo.freightStatement}}\n                            <div class="c-free-tooltips  " data-toggle="tooltip">\n                                <div class="ui-tooltips  ui-tooltips-bottom-right-arrow  c-carriage-tips " >\n                                    <div class="ui-tooltips-arrow">\n                                        <span class="arrow arrow-out">\u25c6</span>\n                                        <span class="arrow">\u25c6</span>\n                                    </div>\n                                    <div class="ui-tooltips-content J_free_tips_{{supplier.supplierInfo.supplierId}} ">{{supplier.splitOrderFreightInfo.freightStatement}}</div>\n                                </div>\n                                <span class="vipFont if-query tooltips-trigger-icon J_free_tips_icon_{{supplier.supplierInfo.supplierId}} J_free_tips_icon">\ue62f</span>\n                            </div>\n                            {{/if}} \n                            {{if supplier.splitOrderFreightInfo.linkType != "none" && supplier.splitOrderFreightInfo.addOnItemType}}\n                            <a class="more  J_needed_to_buy_more_link"\n                                href="{{supplier.splitOrderFreightInfo.link}}" target="_blank" rel="external"\n                                mars_sead="cart_qcd_link">\u53bb\u51d1\u5355<span class="u-open-arrow  c-open-arrow-right">&gt;</span></a>\n                            {{/if}}       \n                        </div>\n                    </div>\n                    \n                </div>\n                {{/if}}\n            </div>\n        </div>\n        {{/each}}\n    </div>\n    <div class="J_toast hidden">\n            <div class="m-cart-tip ui-tooltips J_tooltips">\n                \x3c!--z-ui-tooltips-in--\x3e\n                <div class="ui-tooltips-content i-content">\n                    <p class="ui-tooltips-msg"><span class="i-text J_text"></span></p>\n                </div>\n            </div>\n        </div>\n    </div>\n\x3c/script>\n\n\x3c!-- \u4e13\u4eab\u4ef7 --\x3e\n<script id="J_grade_price_template" type="text/html">\n    <div class="c-grade-price-body J_grade_price_body">\n        <div class="c-grade-price-content">\n            <div class="c-grade-price-scroll">\n                <ul class="c-grade-price-list">\n                    {{each exclusivePriceList as item k}}\n                    <li class="c-grade-price-item" mars_sead="{{if item.activeNo}}cart_price_activity_btn{{else}}cart_price_no_activity_btn{{/if}}">\n                        <span class="ui-radio  c-grade-price-radio">\n                            <input {{if item.isSelected}}checked="checked"{{/if}} type="radio" data-activeNo="{{item.activeNo}}" id="c-grade-price-{{item.sizeId}}{{k}}" name="c-grade-price{{sizeId}}"\n                                   class="ui-radio-normal J_grade_price_input J_grade_price_input{{item.sizeId}}{{item.activeNo}}">\x3c!--\n                         --\x3e<label for="c-grade-price-{{item.sizeId}}{{k}}" class="ui-radio-simulation"></label>\n                       </span>\x3c!--\n                    --\x3e<label for="c-grade-price-{{item.sizeId}}{{k}}" class="c-grade-price-text">{{item.activeName}}{{if item.specialPrice && item.activeNo}} \u4e13\u4eab\u4ef7{{item.specialPrice}}\u5143{{/if}}</label>\n                    </li>    \n                    {{/each}}            \n                </ul>\n            </div>\n        </div>\n        <div class="c-grade-price-actions">\n            <a href="###" role="button" mars_sead="cart_price_yes_btn"\n               class="ui-btn-mini  ui-btn-primary  c-grade-price-button  J_fake_a J_gradePriceConfirm_btn">\u786e\u5b9a</a>\x3c!--\n         --\x3e<a href="###" role="button" mars_sead="cart_price_no_btn"\n               class="ui-btn-mini  ui-btn-default  c-grade-price-button  J_fake_a J_gradePriceCancle_btn">\u53d6\u6d88</a>\n        </div>\n        <div class="c-grade-price-mask"></div>\n        <div class="c-grade-price-tooltips  c-grade-price-tooltips-error J_grade_price_error">\n            <p>\n                <span class="c-grade-price-error-glyphicon  vipFont  if-sigh">&#xe620;</span>\u9009\u62e9\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\n            </p>\n        </div>\n        <div class="c-grade-price-tooltips  c-grade-price-tooltips-loader J_grade_price_loading">\n            <p>\n                <img class="c-grade-price-loader-icon"\n                     src="//bootstrap.vipstatic.com/img/ui/ui-loading-pink-16x16.gif"\n                     width="16" height="16" alt="\u52a0\u8f7d\u4e2d\u2026">\u52a0\u8f7d\u4e2d\u2026\n            </p>\n        </div>\n    </div>\n\x3c/script>\n\n\n';
        var amountTotalTpl = '<script type="text/html" id="J_cart_amount">\n    <div class="orders-total-bd">\n        \x3c!-- \u5168\u90e8\u6ca1\u8d27\u65f6\u9690\u85cf --\x3e\n        <div class="c-price-panel J_price_panel">\n            <div class="c-price-panel-item">\n                <span class="m-price  c-price-panel-price">\n                    <span class="u-yen">&yen;</span>\x3c!--\n                 --\x3e<span class="u-price J_info_goodsTotal">{{amounts.goodsTotal}}</span>\n                </span>\n                \u5171<span class="c-price-panel-quantity  J_info_numTotal">{{count.checkedCount}}</span>\u4ef6\u5546\u54c1&nbsp;&nbsp;\u5546\u54c1\u91d1\u989d\n            </div>\n            \x3c!-- \u4f18\u60e0\u660e\u7ec6 --\x3e\n            {{if amountDetails}}\n                {{each amountDetails.itemList as item}}\n                    {{if item.type == "2"}}\n                    <div class="c-price-panel-item  J_info_activeTips">\n                        <span class="m-price  c-price-panel-price">\n                            -<span class="u-yen">&yen;</span>\x3c!--\n                         --\x3e<span class="u-price  J_info_activeTotal">{{item.amount}}</span>\n                        </span>\n                        {{item.title}}\n                    </div>\n                    {{/if}}\n                {{/each}}\n            {{else if amounts.savedMoney && amounts.savedMoney > 0}}\n                <div class="c-price-panel-item  J_info_couponFavTips">\n                    <span class="m-price  c-price-panel-price">\n                        -<span class="u-yen">&yen;</span>\x3c!--\n                     --\x3e<span class="u-price">{{amounts.savedMoney}}</span>\n                    </span>\n                    \u5df2\u4f18\u60e0\n                </div>\n            {{/if}}\n            <div class="c-price-panel-item  c-price-panel-item-total">\n                <span class="m-price  c-price-panel-price">\n                    <span class="u-yen">&yen;</span>\x3c!--\n                 --\x3e<span class="u-price J_info_total">{{amounts.payTotal}}</span>\n                </span>\n                \u603b\u91d1\u989d\uff08<span class="J_pms_fee_hint">\u672a\u542b\u8fd0\u8d39</span>\uff09\n            </div>\n        </div>\n    </div>\n    <div class="orders-total-ft-placeholder">\n        <div class="orders-total-ft" id="J_accountBar">\n            <div class="orders-total-amount">\n                <p class="orders-total-amount-text">\n                    \u603b\u91d1\u989d\uff08<span class="J_pms_fee_hint">\u672a\u542b\u8fd0\u8d39</span>\uff09\uff1a\n                    <span class="m-price">\n                        <span class="u-yen">&yen;</span><span class="u-price J_info_total">{{amounts.payTotal}}</span>\n                    </span>\n                </p>\n            </div>\n            <div class="m-shopping-tips J_countDown">\n                <p class="shopping-tips-text countdown-text J_countDown_normal">\n                    \u8bf7\u5728\u5012\u8ba1\u65f6\u7ed3\u675f\u524d\u7ed3\u7b97\n                </p>\n                <div class="c-tooltips-trigger tooltips-trigger-bottom shopping-guide-tooltips-trigger J_shopping_guide_tooltips" data-toggle="tooltip">\n                    <span class="vipFont if-query tooltips-trigger-icon">&#xe62f;</span>\n                    \x3c!-- \u4e0b\u5355\u63d0\u793a\u6d6e\u5c42 --\x3e\n                    <div class="ui-tooltips  ui-tooltips-bottom-right-arrow  shopping-guide-tooltips">\n                        <div class="ui-tooltips-arrow">\n                            <span class="arrow arrow-out">&#9670;</span>\n                            <span class="arrow">&#9670;</span>\n                        </div>\n                        <div class="ui-tooltips-content">\n                            <ul class="m-list e-disc-list">\n                                <li class="list-item">\u597d\u5546\u54c1\u9700\u8981\u7cbe\u6311\u7ec6\u9009\uff0c\u7279\u610f\u4e3a\u4f60\u7559\u8db320\u5206\u949f\u8003\u8651\u65f6\u95f4\uff1b\n                                </li>\n                            </ul>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            \x3c!-- \u5e7f\u544a --\x3e\n            \x3c!-- \u5012\u8ba1\u65f6 --\x3e\n            <div class="orders-total-ft-ad f-hide J_ad_ADADS4P87A"></div>\n            <a class="ui-btn-primary  ui-btn-large  ui-btn-loading  btn-orders-submit J_checkout  J_fake_a" role="button" href="###" mars_sead="cart_checkout_btn" id="J_checkout">\n                <span class="ui-btn-loading-before  J_countDown">\u7acb\u5373\u7ed3\u7b97<span class="submit-countdown"><span class="J_operate_countDown_min">00</span>&nbsp;:&nbsp;<span class="J_operate_countDown_sec">00</span></span></span>\n                <span class="ui-btn-loading-after"><span class="ii-loading-gray-24x24"></span></span>\n            </a>\n        </div>\n    </div>\n\x3c/script>';
        var template = require("../../../../../../../libDeprecated/js/plugins/modules/template");
        var VipUI = require("../../../../../../../libDeprecated/js/plugins/modules/ui");
        var CommonPop = require("../../../../../../../libDeprecated/js/plugins/modules/ui/modules/CommonPop");
        var Simulate = require("../../../../../../../libDeprecated/js/plugins/modules/Simulate");
        var ViewTools = require("../../../../../../../libDeprecated/js/plugins/modules/OrderUtil/ViewTools");
        var Statistics = require("../../../../../../../libDeprecated/js/plugins/modules/Statistics");
        var Pin = require("../../../../../../../libDeprecated/js/plugins/modules/Pin/Pin");
        var CartView = {
            data: {
                cartDataTmplData: {},
                accountBar: "",
                interval: null,
                checkedSize: "",
                supplierId_sizeIds: [],
                sizeIds: "",
                checkboxType: 0,
                curTip: null,
                tipsCount: 0,
                onAnimate: false,
                onAnimateEnd: null
            },
            tmpl: {
                errPop: "J_pop_error",
                orderTmplId: "J_orders_template",
                amountTmplId: "J_cart_amount"
            },
            events: {
                pub: {
                    submitCart: "submit.cart",
                    modifyNum: "cart.modify.num",
                    deleteItem: "delete.item",
                    callMarSeed: "call.mar.seed",
                    checkSupplier: "cart.check.supplier",
                    cartGetCart: "cart.getCart"
                },
                sub: {
                    cartGetCartSuccess: "cart.getCart.success",
                    cartGetAdditionalSuccess: "cart.getAdditional.success",
                    submitCartFail: "submit.cart.fail",
                    cartChanged: "cart.changed",
                    checkSupplierSuccess: "cart.check.supplier.success",
                    checkSupplierFail: "cart.check.supplier.fail",
                    modifyNumSuccess: "act.change.success",
                    modifyNumFail: "act.change.fail",
                    deleteItemSuccess: "delete.item.success",
                    deleteItemFail: "delete.item.fail"
                }
            },
            UI: {
                jqCartListModule: $("#J_cart_list"),
                jqAmountModule: $("#J_amount_mod"),
                jqPricePanel: ".J_price_panel",
                jqSubmitBtn: ".J_checkout",
                jqOrder: ".J_order",
                jqSupplier: ".J_supplier",
                jqCheckbox: ".J_checkbox",
                jqOrderActive: ".J_supplier_active_sec",
                jqGoodsGroup: ".J_goodsGroup",
                jqGoodsGroupActive: ".J_group_active_sec",
                jqGoodsItem: ".J_goods_item",
                jqAmountBox: ".J_cart_amount_confirm_box",
                jqAmountTriggerBtn: ".amount-trigger",
                jqAmountSubBtn: ".J_cart_numSubtract",
                jqAmountAddBtn: ".J_cart_numAdd",
                jqAmountTipsTxt: ".J_tip_txt",
                jqAmountInput: ".J_cart_num",
                jqDelBtn: ".J_list_delLink",
                jqDelTxt: ".J_coupon_info",
                confirmBoxContainerSelector: ".J_confirm_box",
                jqDelTipsContainer: ".J_cart_del_confirm_box",
                cartItemConfirmTips: ".J_cart_item_confirm_tips",
                jqModifyConfirm: ".J_cart_tips_modify_confirm",
                jqModifyCancel: ".J_cart_tips_modify_cancel",
                jqDeleteCancel: ".J_cart_tips_del_cancel",
                jqDelConfirm: ".J_cart_tips_del_confirm",
                numEditErrTips: ".J_amount_error_tooltips",
                checkboxSelector: ".m-checkbox",
                pmsMsgSelector: ".J_pms_fee_hint",
                needed2BuyMoreLink: ".J_needed_to_buy_more_link",
                giftsContainer: ".J-gifts-container",
                expandMoreGift: ".J-trigger-gifts-expanded"
            },
            status: {
                hide: "f-hide",
                orderUncheckedCls: "z-orders-unchecked",
                groupActiveEnable: "promotion-on-box",
                groupActiveDisable: "promotion-off-box",
                amountLoading: "z-amount-locked",
                amountTriggerLoading: "z-amount-trigger-loading",
                amountTriggerDisable: "z-amount-trigger-disabled",
                tipsNostock: "amount-error-tooltips-nostock",
                delTipsLoading: "z-order-del-loading",
                delTipsInitSuccess: "z-order-del-init-success",
                delTipsShow: "is-order-del-active",
                orderCannotUncheckCls: "z-checkbox-disabled",
                checkboxCheckedCls: "z-checkbox-checked",
                isGiftsExpanded: "is-gifts-expanded",
                tooltipsIn: "z-ui-tooltips-in",
                freightDisplay: "f-freight-more-display"
            },
            init: function(initData) {
                $("body").append(orderListTpl);
                $("body").append(amountTotalTpl);
                this.bindListeners();
                this.initPlugins();
                this.bindEvent()
            },
            initPlugins: function() {
                var that = this;
                this.UI.errPop = new CommonPop({
                    tmplId: that.tmpl.errPop,
                    popConfig: {
                        size: "medium",
                        elStyle: "common-error-modal"
                    }
                })
            },
            bindListeners: function() {
                var that = this;
                $.Listeners.sub(that.events.sub.cartGetCartSuccess).onsuccess(function(cartData) {
                    that.data.sizeIds = cartData.sizeIds;
                    that.data.supplierId_sizeIds = cartData.supplierId_sizeIds;
                    that.data.checkedSize = cartData.checkedSize;
                    that.renderCartList(cartData);
                    that.renderAmount(cartData)
                });
                $.Listeners.sub(that.events.sub.cartGetAdditionalSuccess).onsuccess(function(data) {
                    that.renderAdditional(data)
                });
                $.Listeners.sub(that.events.sub.submitCartFail).onsuccess(function(data) {
                    VipUI.Button.reset($(that.UI.jqSubmitBtn))
                });
                $.Listeners.sub(that.events.sub.cartChanged).onsuccess(function(data) {
                    if (data.render)
                        that.onCartChanged(data)
                });
                $.Listeners.sub(that.events.sub.modifyNumSuccess).onsuccess(function(data) {
                    that.onModifyNumSuccess(data)
                });
                $.Listeners.sub(that.events.sub.modifyNumFail).onsuccess(function(data) {
                    that.onModifyNumFail(data)
                });
                $.Listeners.sub(that.events.sub.deleteItemSuccess).onsuccess(function(data) {
                    that.onDeleteItemSuccess(data)
                });
                $.Listeners.sub(that.events.sub.deleteItemFail).onsuccess(function(data) {
                    that.onDeleteItemFail(data)
                });
                $.Listeners.sub(that.events.sub.checkSupplierSuccess).onsuccess(function(data) {
                    that.onCheckSupplierSuccess(data)
                });
                $.Listeners.sub(that.events.sub.checkSupplierFail).onsuccess(function(data) {
                    that.onCheckSupplierFail(data)
                })
            },
            bindEvent: function() {
                var that = this;
                $("body").on("click", function(e) {
                    var $dom = $(e.target);
                    if (that.data.tipsCount != 0 && $dom.closest(that.UI.cartItemConfirmTips).size() == 0)
                        that.closeAllTips()
                });
                $("body").on("click", ".J_checkout", function(e) {
                    var jqBtn = $(this);
                    if (!VipUI.Button.isDisable(jqBtn)) {
                        VipUI.Button.loading(jqBtn);
                        $.Listeners.pub(that.events.pub.submitCart).success({})
                    }
                });
                that.UI.jqCartListModule.on("click", that.UI.jqDelBtn, function(e) {
                    var jqBtn = $(this);
                    setTimeout(function() {
                        that.deleteItem(jqBtn)
                    }, 0)
                }).on("click", that.UI.jqAmountSubBtn, function(e) {
                    var jqBtn = $(this);
                    setTimeout(function() {
                        that.modifyNum(jqBtn, {
                            type: "subtract"
                        })
                    }, 0)
                }).on("click", that.UI.jqAmountAddBtn, function(e) {
                    var jqBtn = $(this);
                    setTimeout(function() {
                        that.modifyNum(jqBtn, {
                            type: "add"
                        })
                    }, 0)
                }).on("change", that.UI.jqSupplier, function(e) {
                    var jqCheckbox = $(this);
                    that.checkSupplier(jqCheckbox)
                }).on("click", that.UI.jqDelConfirm, function(e) {
                    that.deleteItem($(this), {
                        confirm: true
                    })
                }).on("click", that.UI.jqModifyConfirm, function(e) {
                    var jqBtn = $(this);
                    that.modifyNum(jqBtn, {
                        confirm: true
                    })
                }).on("click", that.UI.jqDeleteCancel, function(e) {
                    var jqItem = $(this).closest(that.UI.jqGoodsItem);
                    that.ConfirmTipssetStatus(jqItem, {
                        action: "delete"
                    })
                }).on("click", that.UI.jqModifyCancel, function(e) {
                    var jqItem = $(this).closest(that.UI.jqGoodsItem);
                    that.ConfirmTipssetStatus(jqItem, {
                        action: "modify"
                    })
                })
            },
            checkSupplier: function(jqCheckbox) {
                var that = this;
                var jqOrder = jqCheckbox.closest(this.UI.jqCheckbox), checkbox = jqOrder.data("checkbox"), sizeIds;
                switch (checkbox) {
                case "cartInfo":
                    sizeIds = that.data.sizeIds;
                    that.data.checkboxType = 1;
                    break;
                case "supplier":
                    var supplierId = jqOrder.data("supplier_id");
                    sizeIds = that.data.supplierId_sizeIds[supplierId];
                    that.data.checkboxType = 2;
                    break;
                case "item":
                    sizeIds = jqOrder.data("size_id");
                    that.data.checkboxType = 3;
                    break
                }
                if (!jqOrder.hasClass(that.status.orderCannotUncheckCls))
                    if (!jqOrder.hasClass(that.status.checkboxCheckedCls))
                        $.Listeners.pub(that.events.pub.checkSupplier).success({
                            size_ids: sizeIds,
                            operation_type: "checked"
                        });
                    else
                        $.Listeners.pub(that.events.pub.checkSupplier).success({
                            size_ids: sizeIds,
                            operation_type: "uncheck"
                        })
            },
            deleteItem: function(jqThis, opt) {
                var that = this;
                var set = {
                    confirm: false
                };
                $.extend(set, opt);
                var jqItem = jqThis.closest(this.UI.jqGoodsItem)
                  , jqConfirmBoxContainer = jqItem.find(this.UI.jqDelTipsContainer)
                  , jqTips = jqConfirmBoxContainer.find(this.UI.cartItemConfirmTips)
                  , supplier_id = jqItem.data("supplier_id")
                  , group_index = jqItem.data("group_index")
                  , product_id = jqItem.data("product_id")
                  , size_id = jqItem.data("size_id");
                if (set.confirm) {
                    VipUI.Tooltips.close(jqTips);
                    jqConfirmBoxContainer.removeClass(this.status.delTipsShow)
                }
                $.Listeners.pub(that.events.pub.deleteItem).success({
                    size_id: size_id,
                    supplier_id: supplier_id,
                    group_index: group_index,
                    product_id: product_id,
                    confirm: set.confirm
                })
            },
            onDeleteItemSuccess: function(data) {
                var that = this;
                var jqItem = this.getGoodsItemBySizeId(data.size_id);
                this.data.onAnimate = true;
                jqItem.fadeOut(function() {
                    that.data.onAnimate = false;
                    if (that.data.onAnimateEnd != null) {
                        that.data.onAnimateEnd();
                        that.data.onAnimateEn == null
                    }
                })
            },
            onDeleteItemFail: function(data) {
                if (!data.size_id) {
                    this.UI.errPop.open({
                        msg: data.msg
                    });
                    return
                }
                var jqItem = this.getGoodsItemBySizeId(data.size_id);
                switch (data.code) {
                case "CONFIRM":
                    this.ConfirmTipssetStatus(jqItem, {
                        isShow: true,
                        msg: data.msg,
                        del_mars: data.del_mars,
                        cancel_mars: data.cancel_mars,
                        pop_mars: data.pop_mars
                    });
                    break;
                default:
                    this.ConfirmTipssetStatus(jqItem, {});
                    this.UI.errPop.open({
                        msg: data.msg
                    });
                    break
                }
            },
            onCheckSupplierSuccess: function(data) {
                var that = this;
                if (data.selectMessage) {
                    that.showToast("", data.selectMessage);
                    setTimeout(function() {
                        $.Listeners.pub(that.events.pub.cartGetCart).success()
                    }, 1E3)
                } else {
                    that.showToast("", "\u8bf7\u7a0d\u7b49...");
                    $.Listeners.pub(that.events.pub.cartGetCart).success()
                }
            },
            showToast: function(type, msg) {
                $(".J_toast").removeClass("hidden").find(".J_tooltips").addClass("z-ui-tooltips-in").find(".J_text").html(msg)
            },
            hideToast: function() {
                $(".J_toast").find(".J_tooltips").removeClass("z-ui-tooltips-in").end().addClass("hidden")
            },
            onCheckSupplierFail: function(data) {
                this.UI.errPop.open({
                    msg: data.msg
                })
            },
            modifyNum: function(jqThis, opt) {
                var that = this;
                var set = {
                    type: "",
                    confirm: false
                };
                $.extend(set, opt);
                var jqItem = jqThis.closest(this.UI.jqGoodsItem)
                  , jqAmountBox = jqItem.find(this.UI.jqAmountBox)
                  , jqCartNum = jqItem.find(".J_cart_num")
                  , num = parseInt(jqCartNum.val())
                  , size_id = jqCartNum.data("size_id");
                if (!jqThis.hasClass(that.status.amountTriggerDisable))
                    if (set.confirm || !jqAmountBox.hasClass(that.status.amountLoading)) {
                        if (!set.confirm) {
                            this.numberWidgetSetStatus(jqItem, {
                                jqBtn: jqThis
                            });
                            jqCartNum.attr({
                                source_num: num
                            });
                            if (set.type == "add")
                                num++;
                            else
                                num--
                        }
                        jqCartNum.val(num);
                        $.Listeners.pub(that.events.pub.modifyNum).success({
                            size_id: size_id,
                            num: num,
                            type: set.type,
                            confirm: set.confirm
                        })
                    }
            },
            onModifyNumSuccess: function(data) {
                var jqItem = this.getGoodsItemBySizeId(data.size_id);
                this.numberWidgetSetStatus(jqItem, {
                    loading: false
                })
            },
            onModifyNumFail: function(data) {
                var jqItem = this.UI.jqCartListModule.find(this.UI.jqGoodsItem + '[data-size_id="' + data.size_id + '"]')
                  , jqErrTips = jqItem.find(this.UI.numEditErrTips)
                  , jqConfirmBoxContainer = jqItem.find(this.UI.jqAmountBox)
                  , reset = true;
                switch (data.code) {
                case "SUBTRACT":
                case "CONFIRM":
                    this.ConfirmTipssetStatus(jqItem, {
                        action: "modify",
                        isShow: true,
                        msg: data.msg
                    });
                    reset = false;
                    break;
                case 6005:
                case 7002:
                    jqErrTips.removeClass(this.status.tipsNostock).find(this.UI.jqAmountTipsTxt).text(data.msg);
                    VipUI.Tooltips.open(jqErrTips, {
                        autoClose: 1500
                    });
                    break;
                default:
                    this.UI.errPop.open({
                        msg: data.msg
                    });
                    break
                }
                if (reset)
                    this.numberWidgetSetStatus(jqItem, {
                        loading: false,
                        resetNum: true
                    })
            },
            getOrderBySupplierId: function(supplier_id) {
                return this.UI.jqCartListModule.find(this.UI.jqOrder + '[data-supplier_id="' + supplier_id + '"]')
            },
            getGoodsItemBySizeId: function(size_id) {
                return this.UI.jqCartListModule.find(this.UI.jqGoodsItem + '[data-size_id="' + size_id + '"]')
            },
            closeAllTips: function() {
                var that = this;
                if (that.data.tipsCount != 0 && that.data.curTip)
                    this.ConfirmTipssetStatus(that.data.curTip.jqItem, {
                        action: that.data.curTip.action
                    })
            },
            ConfirmTipssetStatus: function(jqItem, opt) {
                var set = {
                    isShow: false,
                    action: "delete",
                    msg: ""
                };
                $.extend(set, opt);
                var jqConfirmBoxContainer = set.action == "delete" ? jqItem.find(this.UI.jqDelTipsContainer) : jqItem.find(this.UI.jqAmountBox)
                  , jqTips = jqConfirmBoxContainer.find(this.UI.cartItemConfirmTips);
                if (set.isShow) {
                    this.closeAllTips();
                    Statistics.init();
                    jqTips.find(this.UI.jqDelTxt).html(set.msg);
                    set.del_mars && jqTips.find(this.UI.jqDelConfirm).attr("mars_sead", set.del_mars);
                    set.cancel_mars && jqTips.find(this.UI.jqDeleteCancel).attr("mars_sead", set.cancel_mars);
                    VipUI.Tooltips.open(jqTips);
                    $.Listeners.pub(this.events.pub.callMarSeed).success({
                        mars_sead: set.pop_mars,
                        data_mars: {}
                    });
                    jqConfirmBoxContainer.addClass(this.status.delTipsShow);
                    this.data.curTip = {
                        jqItem: jqItem,
                        action: set.action
                    };
                    this.data.tipsCount++
                } else {
                    VipUI.Tooltips.close(jqTips);
                    jqConfirmBoxContainer.removeClass(this.status.delTipsShow);
                    this.data.curTip = null;
                    this.data.tipsCount--;
                    if (set.action == "modify")
                        this.numberWidgetSetStatus(jqItem, {
                            loading: false,
                            resetNum: true
                        })
                }
            },
            numberWidgetSetStatus: function(jqItem, opt) {
                var set = {
                    jqBtn: jqItem.find(this.UI.jqAmountTriggerBtn),
                    loading: true,
                    resetNum: false
                };
                $.extend(set, opt);
                var jqAmountBox = jqItem.find(this.UI.jqAmountBox)
                  , jqCartNum = jqItem.find(this.UI.jqAmountInput);
                if (set.loading) {
                    set.jqBtn.addClass(this.status.amountTriggerLoading);
                    jqAmountBox.addClass(this.status.amountLoading)
                } else {
                    set.jqBtn.removeClass(this.status.amountTriggerLoading);
                    jqAmountBox.removeClass(this.status.amountLoading);
                    if (set.resetNum)
                        jqCartNum.val(jqCartNum.attr("source_num"))
                }
            },
            onCartChanged: function(data) {
                var that = this
                  , set = {
                    action: data.action || "",
                    couponSns: data.couponSns || ""
                };
                if (this.data.onAnimate)
                    this.data.onAnimateEnd = function() {
                        $.Listeners.pub(that.events.pub.cartGetCart).success(set);
                        that.UI.jqCartListModule.html();
                        that.UI.jqAmountModule.html()
                    }
                    ;
                else
                    $.Listeners.pub(that.events.pub.cartGetCart).success(set)
            },
            renderCartList: function(data) {
                var that = this;
                that.data.cartDataTmplData = {};
                var tmpHTML = template(that.tmpl.orderTmplId, {
                    cartList: data
                });
                that.UI.jqCartListModule.html(tmpHTML)
            },
            renderAdditional: function(data) {
                var that = this;
                if (!$.isEmptyObject(data) && !$.isEmptyObject(data.sizeIdProductInfoMap))
                    for (var key in data.sizeIdProductInfoMap)
                        for (var i = 0; i < data.sizeIdProductInfoMap[key].extTipsList.length; i++) {
                            var extTipsList = data.sizeIdProductInfoMap[key].extTipsList[i];
                            if (extTipsList.type == "7")
                                $('tr[data-size_id="' + key + '"]').addClass("is-goods-row-show-stock")
                        }
            },
            renderAmount: function(data) {
                var that = this;
                var amountTotalTpl = template(that.tmpl.amountTmplId, data.cartInfo);
                that.UI.jqAmountModule.html(amountTotalTpl);
                if (data.isAllUnAvailable) {
                    $(that.UI.jqPricePanel).addClass("hidden");
                    VipUI.Button.disable($(that.UI.jqSubmitBtn))
                }
                if (!that.data.checkedSize)
                    VipUI.Button.disable($(that.UI.jqSubmitBtn));
                var time = data.cartInfo.time.remainingTime;
                this.data.interval && clearInterval(this.data.interval);
                this.data.interval = setInterval(function() {
                    time--;
                    that.CartCountDown(time)
                }, 1E3);
                that.data.accountBar = new Pin({
                    $el: $("#J_accountBar"),
                    activeClass: "pin-orders-total-ft",
                    containerSelector: ".J_accountBar_position_container"
                })
            },
            CartCountDown: function(time) {
                var that = this
                  , time = parseInt(time)
                  , min = 0
                  , sec = 0;
                min = parseInt(time / 60) >= 10 ? parseInt(time / 60) : "0" + parseInt(time / 60);
                sec = parseInt(time % 60) >= 10 ? parseInt(time % 60) : "0" + parseInt(time % 60);
                $(".J_operate_countDown_min").html(min);
                $(".J_operate_countDown_sec").html(sec);
                if (time == 0) {
                    clearInterval(that.data.interval);
                    location.href = VIPSHOP.cartHost + "?error=3"
                }
                return that
            }
        };
        module.exports = CartView
    }
    , {
        "../../../../../../../libDeprecated/js/plugins/modules/OrderUtil/ViewTools": 42,
        "../../../../../../../libDeprecated/js/plugins/modules/Pin/Pin": 46,
        "../../../../../../../libDeprecated/js/plugins/modules/Simulate": 54,
        "../../../../../../../libDeprecated/js/plugins/modules/Statistics": 55,
        "../../../../../../../libDeprecated/js/plugins/modules/template": 58,
        "../../../../../../../libDeprecated/js/plugins/modules/ui": 60,
        "../../../../../../../libDeprecated/js/plugins/modules/ui/modules/CommonPop": 63
    }],
    10: [function(require, module, exports) {
        var CouponModel = require("./CouponModel");
        var CouponView = require("./CouponView");
        var nsCoupon = {
            timeout: false,
            events: {
                sub: {
                    chkTimeout: "coupon.timeout.check"
                }
            },
            init: function(data) {
                CouponView.init(data);
                CouponModel.init(data);
                $.Listeners.sub("cart.timeout").onsuccess(function(data) {
                    nsCoupon.timeout = data.timeout
                });
                $.Listeners.sub(nsCoupon.events.sub.chkTimeout).onsuccess(function(data) {
                    if (!nsCoupon.timeout)
                        data.cb();
                    else if (data.autoKeepStock)
                        $.Listeners.pub("cart.reload").success()
                })
            }
        };
        module.exports = nsCoupon
    }
    , {
        "./CouponModel": 11,
        "./CouponView": 12
    }],
    11: [function(require, module, exports) {
        var takeErrorCode = require("../../../../../../libDeprecated/js/bo/error/takeErrorCode.js");
        var moSwitch = require("../../../../../../libDeprecated/js/plugins/moSwitch.js");
        var pcSwitch = require("../../../../../../libDeprecated/js/plugins/pcSwitch.js");
        var userCouponServ = require("../../../../../../../../api/serv/user/coupon");
        var cartListServ = require("../../../../../../../../api/serv/cart/cartList");
        Number.prototype.toFixed = function(fractionDigits) {
            return (parseInt(this * Math.pow(10, fractionDigits) + 0.5) / Math.pow(10, fractionDigits)).toString().replace(/\.(\d+)$/, function(str, $1) {
                return "." + ($1.length >= fractionDigits ? $1 : $1 * Math.pow(10, fractionDigits - $1.length))
            })
        }
        ;
        var CouponModel = {
            moSwitch: 1,
            virtual_cart_id: "",
            couponField: {
                brand: 3,
                single: 4,
                all: 5
            },
            unusableCode: {
                available: 0,
                needBuyMore: 1,
                brandCouponMutex: 2,
                brandNotFound: 3,
                other: 4,
                couponCategoryMutex: -100
            },
            availableList: [],
            couponList: "",
            allCouponsList: {},
            api: VIPSHOP.cartHost + "/brand_coupon.php",
            hasLoaded: 0,
            pcSwitch: 0,
            msg: {
                USE_SUCCESS: "\u4f18\u60e0\u5238\u4f7f\u7528\u6210\u529f\uff01",
                EMPTY_NUM: "\u8bf7\u586b\u5199\u6fc0\u6d3b\u7801\u3002",
                WRONG_NUM: "\u4f60\u8f93\u5165\u7684\u6fc0\u6d3b\u7801\u6709\u8bef\uff0c\u8bf7\u6838\u5bf9\u540e\u91cd\u65b0\u8f93\u5165\u3002",
                NOT_USE: "\u4f18\u60e0\u5238\u5df2\u6fc0\u6d3b\uff0c\u4f46\u672a\u80fd\u6ee1\u8db3\u4f7f\u7528\u6761\u4ef6\u3002",
                CANCEL_SUCCESS: "\u4f60\u7684\u4f18\u60e0\u5238\u5df2\u53d6\u6d88\u4f7f\u7528\uff01",
                ACTIVATE_LIMIT: "\u4f60\u7684\u6fc0\u6d3b\u7801\u672a\u80fd\u6210\u529f\u6fc0\u6d3b\uff01",
                ALREADY_ACTIVATE: "\u8fd9\u4e2a\u6fc0\u6d3b\u7801\u5df2\u7ecf\u88ab\u6fc0\u6d3b\u8fc7\u4e86~",
                USERTYPE_LIMIT: "\u4f60\u672a\u7b26\u5408\u6fc0\u6d3b\u6761\u4ef6\uff0c\u672c\u5238\u4e3a\u65b0\u7528\u6237\u4e13\u4eab\u3002",
                FDS_ERROR: "\u5f88\u62b1\u6b49\uff0c\u5238\u5df2\u9886\u5b8c\u301001\u3011"
            },
            msgDtl: {
                USE_SUCCESS: ['\u6210\u529f\u4f7f\u7528<span class="u-highlight">$count$\u5f20</span>\u4f18\u60e0\u5238\uff0c\u5171\u83b7\u5f97<span class="u-highlight">$amount$\u5143</span>\u4f18\u60e0\u3002'],
                WRONG_NUM: ["\u6fc0\u6d3b\u7801\u5b57\u7b26\u6216\u4f4d\u6570\u662f\u5426\u6b63\u786e\uff08\u4e0d\u533a\u5206\u5927\u5c0f\u5199\uff0c\u53ea\u652f\u6301\u6570\u5b57\u548c\u5b57\u6bcd\u7ec4\u5408\uff09\u3002", "\u6fc0\u6d3b\u7801\u662f\u5426\u5df2\u8fc7\u6709\u6548\u671f\u3002"],
                NOT_USE: "\u53ef\u901a\u8fc7\u4e0b\u65b9\u7684\u4f18\u60e0\u5238\u5217\u8868\u67e5\u770b\u4f18\u60e0\u5238\u7684\u4f7f\u7528\u8303\u56f4\u3002",
                ACTIVATE_LIMIT: ["\u4f60\u5bf9\u8fd9\u5f20\u4f18\u60e0\u5238\u7684\u6fc0\u6d3b\u6b21\u6570\u5df2\u8fbe\u4e0a\u9650\u3002"]
            },
            events: {
                pub: {
                    cartCouponUse: "coupon.cartCoupon.use",
                    changeCouponId: "change.coupon",
                    loadSuccess: "coupon.model.loadSuccess",
                    loadFail: "coupon.model.loadFail",
                    activateSuccess: "coupon.model.activateSuccess",
                    activateNoUseSuccess: "coupon.model.activateNotUseSuccess",
                    activateFail: "coupon.model.activateFail",
                    useSuccess: "coupon.model.useSuccess",
                    useFail: "coupon.model.useFail",
                    cancelSuccess: "coupon.model.cancelSuccess",
                    cancelFail: "coupon.model.cancelFail",
                    pmsCouponListStatusChange: "coupon.pms.statusChange",
                    pmsCouponListStatusChangeFail: "coupon.pms.statusChangeFail",
                    chkTimeout: "coupon.timeout.check",
                    loadAllCouponsFail: "load.allCoupon.fail",
                    loadAllCouponsSuccess: "load.allCoupon.success"
                },
                sub: {
                    cartGetCartSuccess: "cart.getCart.success",
                    load: "coupon.view.load",
                    activate: "coupon.view.activate",
                    use: "coupon.view.use",
                    change: "coupon.view.change",
                    changeToActivate: "coupon.view.changeToActivate",
                    cancel: "coupon.view.cancel",
                    reload: "coupon.view.reload",
                    retry: "coupon.view.retry",
                    pmsCouponClick: "coupon.pms.click",
                    newCartPrepay: "new.cart.prepay"
                }
            },
            data: {
                inUse: false,
                used: false,
                ids: "",
                isAllCouponsLoaded: false,
                autoLoadCouponList: 0,
                additionFunction: ""
            },
            pmsCache: {},
            isAlreadyInit: false,
            init: function(initData) {
                var that = this;
                this.bindCtrlEvent();
                this.getMoSwitch()
            },
            getMoSwitch: function() {
                var that = this;
                $.when(moSwitch.getSwitch("1173")).then(function(data) {
                    if (data[0].status == 0)
                        that.data.moSwitch = 0
                }, "")
            },
            bindCtrlEvent: function() {
                var that = this;
                $.Listeners.sub(CouponModel.events.sub.load).onsuccess(function(data) {
                    that.load()
                });
                $.Listeners.sub(CouponModel.events.sub.activate).onsuccess(function(data) {
                    that.activate(data.num)
                });
                $.Listeners.sub(CouponModel.events.sub.use).onsuccess(function(data) {
                    that.use(data.favourable_id)
                });
                $.Listeners.sub(CouponModel.events.sub.cancel).onsuccess(function(data) {
                    that.cancel()
                });
                $.Listeners.sub(CouponModel.events.sub.retry).onsuccess(function(data) {
                    that.retry()
                });
                $.Listeners.sub(CouponModel.events.sub.reload).onsuccess(function(data) {
                    that.reload()
                });
                $.Listeners.sub(CouponModel.events.sub.changeToActivate).onsuccess(function(data) {
                    that.changeToActivate(data.num)
                });
                $.Listeners.sub(CouponModel.events.sub.pmsCouponClick).onsuccess(function(data) {
                    that.doPmsClick(data.selectIds, data.totalCash)
                });
                $.Listeners.sub(CouponModel.events.sub.cartGetCartSuccess).onsuccess(function(data) {
                    that.doGetCart(data.cartOrderList)
                });
                $.Listeners.sub(that.events.sub.newCartPrepay).onsuccess(function(data) {
                    if (data && data.additionFunction)
                        that.data.additionFunction += data.additionFunction
                })
            },
            doGetCart: function(cartOrderList) {
                cartOrderList = cartOrderList || [];
                var i, j, couponSnList = [], couponFavTotal = 0, cartCouponList = [];
                for (i in cartOrderList) {
                    selectedCouponList = cartOrderList[i] && cartOrderList[i].selectedCouponList || [];
                    for (j in selectedCouponList) {
                        couponSn = selectedCouponList[j].couponSn;
                        if (couponSn) {
                            couponSnList.push(couponSn);
                            couponFavTotal = couponFavTotal + parseFloat(selectedCouponList[j].couponFav || 0);
                            cartCouponList.push({
                                couponSn: couponSn,
                                couponFavDesc: selectedCouponList[j].couponFavDesc || 0
                            })
                        }
                    }
                }
                couponFavTotal = couponFavTotal.toFixed(2);
                if (couponSnList.length == 0)
                    this.onCancelSuccess();
                else
                    this.setUsedCoupon(couponSnList, couponFavTotal, cartCouponList, this.inUse ? true : false);
                this.data.ids = couponSnList.join(",");
                this.inCancel = false;
                this.inUse = false
            },
            loadAllCouponsOne: function(opt, successCB, failCB) {
                var that = this
                  , dtd = $.Deferred()
                  , couponList = [];
                $.when(userCouponServ.cartGetCouponList({
                    coupon_sn: that.data.ids,
                    additionFunction: that.data.additionFunction
                })).then(function(rtnData) {
                    that.availableList = rtnData && rtnData.usableCoupons || [];
                    couponList = that.getMergeCouponListV1(rtnData && rtnData.usableCoupons);
                    successCB && successCB({
                        couponList: couponList
                    })
                }, function(rtnData) {
                    failCB && failCB(rtnData)
                })
            },
            loadAllCouponsMerge: function(opt, successCB, failCB) {
                var that = this
                  , dtd = $.Deferred()
                  , couponList = [];
                $.when(userCouponServ.getCouponAvailableList({
                    coupon_sn: that.data.ids
                })).then(function(rtnData) {
                    that.availableList = rtnData && rtnData.available_list || [];
                    if (that.availableList.length > 0) {
                        $.when(cartListServ.getUsableCoupons({
                            coupon_sn: that.data.ids,
                            additionFunction: that.data.additionFunction
                        })).then(function(rtnData) {
                            couponList = that.getMergeCouponList(rtnData && rtnData.usable_coupons, rtnData && rtnData.unavailable_coupons);
                            successCB && successCB({
                                couponList: couponList
                            })
                        }, function(rtnData) {
                            failCB && failCB(rtnData)
                        });
                        return
                    }
                    successCB && successCB({
                        couponList: couponList
                    })
                }, function(rtnData) {
                    failCB && failCB(rtnData)
                })
            },
            getMergeCouponList: function(usableCoupons, unavailableCoupons) {
                var couponsMap = {}, i, availableCoupon, usableCoupon, coupon, couponList = [];
                usableCoupons = usableCoupons || [];
                unavailableCoupons = unavailableCoupons || [];
                if (usableCoupons.length > 0 || unavailableCoupons.length > 0) {
                    for (i in usableCoupons)
                        couponsMap[usableCoupons[i].coupon_sn] = usableCoupons[i];
                    for (i in unavailableCoupons) {
                        if (unavailableCoupons[i].unusable_code != 1)
                            continue;
                        couponsMap[unavailableCoupons[i].coupon_sn] = unavailableCoupons[i]
                    }
                    for (i in usableCoupons) {
                        for (j in this.availableList) {
                            var useAvaList = false;
                            if (this.availableList[j].coupon_sn == usableCoupons[i].coupon_sn) {
                                useAvaList = true;
                                coupon = this.availableList[j];
                                if (couponsMap[coupon.coupon_sn]) {
                                    availableCoupon = this.couponMerge(coupon, couponsMap[coupon.coupon_sn]);
                                    couponList.push(availableCoupon)
                                }
                                break
                            }
                        }
                        if (!useAvaList) {
                            coupon = usableCoupons[i];
                            if (couponsMap[coupon.coupon_sn]) {
                                availableCoupon = this.couponMerge(coupon, couponsMap[coupon.coupon_sn]);
                                couponList.push(availableCoupon)
                            }
                        }
                    }
                }
                return couponList
            },
            getMergeCouponListV1: function(usableCoupons) {
                var couponList = [], coupon;
                usableCoupons = usableCoupons || [];
                if (usableCoupons.length > 0)
                    for (i in usableCoupons) {
                        useAvaList = true;
                        coupon = usableCoupons[i];
                        coupon.styleType = coupon.styleType;
                        coupon.usable = coupon.usable;
                        coupon.coupon_fav = coupon.couponFav;
                        coupon.buy_more = coupon.buyMore;
                        coupon.use_limit = coupon.useLimit;
                        coupon.coupon_id = coupon.couponId;
                        coupon.unusable_code = coupon.unusableCode;
                        coupon.coupon_sn = coupon.couponSn;
                        coupon.title = coupon.couponFieldName;
                        coupon.stop_time = this.getTimeStr(coupon.endTime);
                        couponList.push(coupon)
                    }
                return couponList
            },
            couponMerge: function(availableCoupon, usableCoupon) {
                availableCoupon.coupon_fav = usableCoupon.coupon_fav;
                availableCoupon.usable = parseInt(usableCoupon.usable || 0);
                availableCoupon.unusable_code = parseInt(usableCoupon.unusable_code || 0);
                availableCoupon.unusableReasons = usableCoupon.unusableReasons;
                availableCoupon.range = usableCoupon.range;
                if (undefined === availableCoupon.title && (usableCoupon.coupon_typename && usableCoupon.coupon_name))
                    availableCoupon.title = usableCoupon.coupon_typename + " | " + usableCoupon.coupon_name;
                availableCoupon.buy_more = usableCoupon.buy_more;
                availableCoupon.stop_time = this.getTimeStr(availableCoupon.end_time);
                return availableCoupon
            },
            loadAllCoupons: function(force) {
                var that = this;
                var couponSwitch = "cartMerchandiseCoupon";
                $.when(pcSwitch.getSwitch(couponSwitch)).then(function(data) {
                    if (data && data[couponSwitch] === true) {
                        that.pcSwitch = 1;
                        that.loadAllCouponsInOne()
                    } else
                        that.loadAllCouponsOld()
                }, function() {
                    that.loadAllCouponsOld()
                })
            },
            loadAllCouponsInOne: function() {
                var that = this;
                that.loadAllCouponsOne({}, function(rtnData) {
                    var allCouponsList = rtnData && rtnData.couponList || [];
                    CouponModel.allCouponsList = allCouponsList;
                    CouponModel.setAllCouponsList(allCouponsList, false)
                }, function(rtnData) {
                    if (rtnData && rtnData.code)
                        that.loadAllCouponsFail(rtnData.code, rtnData.msg);
                    else
                        that.loadAllCouponsFail(-999, "\u6570\u636e\u52a0\u8f7d\u8d85\u65f6")
                })
            },
            loadAllCouponsOld: function() {
                var that = this;
                that.loadAllCouponsMerge({}, function(rtnData) {
                    var allCouponsList = rtnData && rtnData.couponList || [];
                    CouponModel.allCouponsList = allCouponsList;
                    CouponModel.setAllCouponsList(allCouponsList, false)
                }, function(rtnData) {
                    if (rtnData && rtnData.code)
                        that.loadAllCouponsFail(rtnData.code, rtnData.msg);
                    else
                        that.loadAllCouponsFail(-999, "\u6570\u636e\u52a0\u8f7d\u8d85\u65f6")
                })
            },
            loadAllCouponsFail: function(code, msg) {
                $.Listeners.pub(CouponModel.events.pub.loadAllCouponsFail).success({
                    code: code,
                    msg: msg
                })
            },
            load: function() {
                this.loadAllCoupons()
            },
            reload: function() {
                this.loadAllCoupons(true)
            },
            retry: function() {
                this.loadAllCoupons(true)
            },
            use: function(num) {
                var that = this;
                that.inUse = true;
                $.Listeners.pub(CouponModel.events.pub.changeCouponId).success({
                    couponSns: num
                })
            },
            activate: function(num) {
                var that = this;
                var rtnData = this.translateViewType(num);
                if (rtnData.status == 1) {
                    $.when(cartListServ.activeCoupon({
                        num: num
                    })).then(function(rtnData) {
                        var couponList = that.getMergeCouponList(rtnData && rtnData.usable_coupons, rtnData && rtnData.unavailable_coupons);
                        that.pmsCache[selectIds + totalCash] = JSON.stringify(couponList);
                        $.Listeners.pub(that.events.pub.pmsCouponListStatusChange).success({
                            list: couponList
                        })
                    }, function(rtnData) {
                        $.Listeners.pub(that.events.pub.pmsCouponListStatusChangeFail).success()
                    });
                    $.when(cartListServ.activeCoupon({
                        num: num
                    })).then(function(rtnData) {
                        if (rtnData.code == 200) {
                            rtnData.data.couponInfo[0].id = rtnData.data.couponInfo[0].id || rtnData.data.couponInfo[0].coupon_sn;
                            that.data.ids = rtnData.data.couponInfo[0].id;
                            that.data.used = true;
                            $.Listeners.pub(CouponModel.events.pub.activateSuccess).success({
                                code: rtnData.code,
                                couponInfo: rtnData.data.couponInfo,
                                num: num,
                                msg: rtnData.msg
                            });
                            CouponModel.retry()
                        } else {
                            var msg = ""
                              , closeMarsSead = "rightnav_bag_coupon_fail_btn"
                              , msgDtl = null;
                            if (rtnData.code == 901) {
                                msg = CouponModel.msg.WRONG_NUM;
                                msgDtl = CouponModel.msgDtl.WRONG_NUM
                            } else if (rtnData.code == 902) {
                                msg = CouponModel.msg.NOT_USE;
                                msgDtl = CouponModel.msgDtl.NOT_USE;
                                CouponModel.retry()
                            } else if (rtnData.code == 903) {
                                msg = CouponModel.msg.ACTIVATE_LIMIT;
                                msgDtl = CouponModel.msgDtl.ACTIVATE_LIMIT
                            } else if (rtnData.code == 904)
                                msg = CouponModel.msg.ALREADY_ACTIVATE;
                            else if (rtnData.code == 906) {
                                msg = CouponModel.msg.FDS_ERROR;
                                closeMarsSead = "cart_coupon_fds_fail_btn";
                                if (window.Mar)
                                    window.Mar.Seed.request("pop", "request", "cart_coupon_fds_fail_pop", "", "")
                            } else if (rtnData.code == 1078)
                                msg = CouponModel.msg.USERTYPE_LIMIT;
                            else
                                msg = rtnData.msg;
                            $.Listeners.pub(CouponModel.events.pub.activateFail).success({
                                code: rtnData.code,
                                msg: msg,
                                msgDtl: msgDtl,
                                closeMars: closeMarsSead,
                                errorCodeInfo: that.handleErrorCode({
                                    code: rtnData.code,
                                    trace: rtnData.trace,
                                    serverDomain: "cart"
                                })
                            })
                        }
                    }, function(XMLHttpRequest, textStatus) {
                        $.Listeners.pub(CouponModel.events.pub.activateFail).success({
                            code: 500,
                            msg: "\u7cfb\u7edf\u7e41\u5fd9\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5",
                            msgDtl: null,
                            errorCodeInfo: that.handleErrorCode({
                                code: 500,
                                trace: "",
                                serverDomain: "cart",
                                scene: textStatus
                            })
                        })
                    })
                } else
                    $.Listeners.pub(CouponModel.events.pub.activateFail).success({
                        code: 9999,
                        msg: rtnData.msg,
                        msgDtl: rtnData.msgDtl,
                        errorCodeInfo: that.handleErrorCode({
                            code: 9999,
                            trace: "",
                            serverDomain: "cart",
                            scene: "notRequest"
                        })
                    })
            },
            translateViewType: function(num) {
                var numLength = num.length;
                var rtnData = {
                    msg: CouponModel.msg.WRONG_NUM,
                    msgDtl: CouponModel.msgDtl.WRONG_NUM,
                    status: 0
                };
                if (numLength == 0)
                    rtnData.msg = CouponModel.msg.EMPTY_NUM;
                else if ((numLength == 15 || numLength == 8) && /^[a-z0-9]+$/i.test(num))
                    rtnData.status = 1;
                return rtnData
            },
            cancel: function(cb) {
                var that = this;
                that.inCancel = true;
                $.Listeners.pub(CouponModel.events.pub.changeCouponId).success({
                    couponSns: ""
                })
            },
            handleErrorCode: function(data) {
                var traceId = data.trace && data.trace.traceId || ""
                  , time = data.trace && data.trace.time || "";
                if (!data.scene && !traceId)
                    return "";
                return takeErrorCode.init({
                    traceId: traceId || "",
                    time: time,
                    serverDomain: data.serverDomain,
                    codeInfo: {
                        code: data.code || "",
                        scene: data.scene || ""
                    }
                })
            },
            onCancelSuccess: function(rtnData, cb) {
                this.data.ids = "";
                this.data.used = false;
                $.Listeners.pub(CouponModel.events.pub.cancelSuccess).success({
                    num: CouponModel.data.ids,
                    msg: CouponModel.msg.CANCEL_SUCCESS
                });
                cb && cb()
            },
            setAllCouponsList: function(couponList, fromCache) {
                var that = this;
                CouponModel.couponList = couponList;
                $.Listeners.pub(CouponModel.events.pub.loadSuccess).success({
                    fromCache: fromCache,
                    list: CouponModel.couponList,
                    moSwitch: that.data.moSwitch
                });
                that.data.isAllCouponsLoaded = true;
                $.Listeners.pub(CouponModel.events.pub.loadAllCouponsSuccess).success({
                    fromCache: fromCache
                })
            },
            setUsedCoupon: function(couponSnList, couponFavTotal, cartCouponList, isQuiet) {
                this.data.ids = couponSnList.join(",");
                this.data.used = true;
                $.Listeners.pub(CouponModel.events.pub.useSuccess).success({
                    num: this.data.ids,
                    couponFavTotal: couponFavTotal,
                    cartCouponList: cartCouponList,
                    isQuiet: isQuiet
                })
            },
            doPmsClick: function(selectIds, totalCash) {
                var that = this;
                var list = this.pmsCache[selectIds + totalCash];
                if (list)
                    setTimeout(function() {
                        $.Listeners.pub(that.events.pub.pmsCouponListStatusChange).success({
                            list: JSON.parse(list)
                        })
                    }, 0);
                else if (that.pcSwitch == 1)
                    $.when(userCouponServ.cartGetCouponList({
                        coupon_sn: selectIds,
                        additionFunction: that.data.additionFunction
                    })).then(function(rtnData) {
                        that.availableList = rtnData && rtnData.usableCoupons || [];
                        couponList = that.getMergeCouponListV1(rtnData && rtnData.usableCoupons);
                        that.pmsCache[selectIds + totalCash] = JSON.stringify(couponList);
                        $.Listeners.pub(that.events.pub.pmsCouponListStatusChange).success({
                            list: couponList
                        })
                    }, function(rtnData) {
                        failCB && failCB(rtnData)
                    });
                else
                    $.when(cartListServ.getUsableCoupons({
                        coupon_sn: selectIds,
                        additionFunction: that.data.additionFunction
                    })).then(function(rtnData) {
                        var couponList = that.getMergeCouponList(rtnData && rtnData.usable_coupons, rtnData && rtnData.unavailable_coupons);
                        that.pmsCache[selectIds + totalCash] = JSON.stringify(couponList);
                        $.Listeners.pub(that.events.pub.pmsCouponListStatusChange).success({
                            list: couponList
                        })
                    }, function(rtnData) {
                        $.Listeners.pub(that.events.pub.pmsCouponListStatusChangeFail).success()
                    })
            },
            getTimeStr: function(time) {
                var timeFix = [time, "000"].join("") - 0
                  , T = new Date(timeFix)
                  , Y = T.getFullYear()
                  , M = T.getMonth() + 1
                  , D = T.getDate()
                  , H = T.getHours()
                  , MI = T.getMinutes();
                M = M < 10 ? [0, M].join("") : M;
                D = D < 10 ? [0, D].join("") : D;
                H = H < 10 ? [0, H].join("") : H;
                MI = MI < 10 ? [0, MI].join("") : MI;
                return [Y, M, D].join("-") + " " + [H, MI].join(":")
            }
        };
        module.exports = CouponModel
    }
    , {
        "../../../../../../../../api/serv/cart/cartList": 5,
        "../../../../../../../../api/serv/user/coupon": 6,
        "../../../../../../libDeprecated/js/bo/error/takeErrorCode.js": 19,
        "../../../../../../libDeprecated/js/plugins/moSwitch.js": 36,
        "../../../../../../libDeprecated/js/plugins/pcSwitch.js": 66
    }],
    12: [function(require, module, exports) {
        var CouponTpl = '\r\n\r\n\x3c!-- \u5361\u5238\u7ec4\u4ef6 components/coupons/index --\x3e\r\n\r\n\x3c!-- \u5361\u5238 components/coupons/coupons --\x3e\r\n\r\n\x3c!-- // \u5361\u5238 --\x3e\r\n\x3c!-- // @states --\x3e\r\n\x3c!-- // 01. `is-coupons-expanded` \u5c55\u5f00\u5238\u72b6\u6001 --\x3e\r\n\x3c!-- // 02. `is-coupons-used`     \u5df2\u7528\u5238\u72b6\u6001 --\x3e\r\n<script type="text/html" id="J_coupon_tpl">\r\n    <div class="coupons-trigger">\r\n        \x3c!-- \u672a\u7528\u5238\u89e6\u53d1\u5bb9\u5668 --\x3e\r\n        <div class="coupons-trigger-inner">\r\n            <a class="coupons-trigger-button  J_fake_a J_coupon_module_btn"\r\n               href="###" role="button" rel="nofollow" mars_sead="cart_coupon_show_btn">\r\n                <span class="coupons-trigger-text">\u4f7f\u7528\u4f18\u60e0\u5238</span>\r\n                <span class="coupons-trigger-glyphicon  coupons-trigger-glyphicon-up  vipFont">&#xe615;</span>\r\n                <span class="coupons-trigger-glyphicon  coupons-trigger-glyphicon-down  vipFont">&#xe616;</span>\r\n            </a>\r\n\r\n            \x3c!-- // \u91cd\u7f6e\u5238\u6d6e\u5c42 --\x3e\r\n            \x3c!-- // @notice --\x3e\r\n            \x3c!-- // 01. \u9700\u8981\u70b9\u51fb\u5173\u95ed\u6309\u94ae\uff08X\uff09\u624d\u6d88\u5931 --\x3e\r\n<div class="ui-tooltips  ui-tooltips-bottom-left-arrow coupons-reset-tooltips J_tips_block  J_coupon_reset_tips" >\r\n    <div class="ui-tooltips-arrow">\r\n        <span class="arrow arrow-out">&#9670;</span>\r\n        <span class="arrow">&#9670;</span>\r\n    </div>\r\n    <div class="ui-tooltips-content">\r\n        <p class="ui-tooltips-msg"><span class="vipFont  if-sigh">&#xe620;</span>\u56e0\u5546\u54c1\u91d1\u989d\u53d8\u52a8\uff0c\u8bf7\u91cd\u65b0\u9009\u62e9\u4f18\u60e0\u5238\u3002</p><a class="vipFont  ui-tooltips-close  J_fake_a  J_coupon_reset_tips_close"href="###" role="button" title="\u5173\u95ed">&#xe609;</a>\r\n    </div>\r\n</div>\r\n\r\n            \x3c!-- // \u53ef\u7528\u5238\u6d6e\u5c42\uff08\u6d3b\u52a8\u573a\u666f\uff09 --\x3e\r\n            \x3c!-- // @notice --\x3e\r\n            \x3c!-- // 01. \u7279\u6b8a DOM \u7ed3\u6784\uff0c\u6682\u4e0d\u80fd\u63a5\u5165 VUI \u5199\u6cd5 --\x3e\r\n            <div class="ui-tooltips  coupons-contains-promotion-tooltips  J_tips_block  J_reinfoece_tips">\r\n                \x3c!-- // @notice --\x3e\r\n                \x3c!-- // 01. \u56fe\u7247\u5c3a\u5bf8\uff1a266 * 34 --\x3e\r\n                <div class="coupons-contains-promotion-content J_reinfoece_tips_content"></div>\r\n                <a class="button-tooltips-close  J_fake_a  J_close_reinfoece_tips"\r\n                   title="\u5173\u95ed" href="###" role="button"></a>\r\n            </div>\r\n\r\n            \x3c!-- // \u53ef\u7528\u5238\u6d6e\u5c42\uff08\u666e\u901a\u6d41\u7a0b\uff09 --\x3e\r\n            \x3c!-- // @notice --\x3e\r\n            \x3c!-- // 01. \u9700\u8981\u70b9\u51fb\u5173\u95ed\u6309\u94ae\uff08X\uff09\u624d\u6d88\u5931 --\x3e\r\n<div class="ui-tooltips  ui-tooltips-bottom-left-arrow coupons-contains-tooltips J_tips_block  J_has_coupon_tips" >\r\n    <div class="ui-tooltips-arrow">\r\n        <span class="arrow arrow-out">&#9670;</span>\r\n        <span class="arrow">&#9670;</span>\r\n    </div>\r\n    <div class="ui-tooltips-content">\r\n        <a class="vipFont  ui-tooltips-close  J_fake_a  J_has_coupon_tips_close"href="###" role="button" title="\u5173\u95ed" rel="nofollow">&#xe609;</a><div class="J_coupon_use_tips_content"></div>\r\n    </div>\r\n</div>\r\n\r\n        </div>\r\n        \x3c!-- \u5df2\u4f7f\u5238\u89e6\u53d1\u5bb9\u5668 --\x3e\r\n        <div class="coupons-trigger-inner coupons-trigger-used-inner coupons-use-success-wrapper">\r\n            <a class="coupons-trigger-button  J_fake_a  J_coupon_used_block"\r\n               mars_sead="cart_coupon_used_show_btn"\r\n               href="###" role="button" rel="nofollow">\r\n                <span class="coupons-trigger-text">\u5df2\u6210\u529f\u4f7f\u7528<span class="number  u-highlight  J_coupon_used_num">-</span>\u5f20\u4f18\u60e0\u5238</span>\r\n                <span class="coupons-trigger-glyphicon  vipFont">&#xe616;</span>\r\n            </a>\r\n            \x3c!-- // \u6210\u529f\u7528\u5238\u6d6e\u5c42 --\x3e\r\n            \x3c!-- // @notice --\x3e\r\n            \x3c!-- // 01. 5 \u79d2\u540e\u6d88\u5931 --\x3e\r\n<div class="ui-tooltips  ui-tooltips-bottom-left-arrow coupons-success-tooltips J_tips_container  J_coupon_used_success_tooltips" >\r\n    <div class="ui-tooltips-arrow">\r\n        <span class="arrow arrow-out">&#9670;</span>\r\n        <span class="arrow">&#9670;</span>\r\n    </div>\r\n    <div class="ui-tooltips-content">\r\n        <p class="ui-tooltips-msg"><span class="vipFont  if-success">&#xe61e;</span>\u6210\u529f\u4f7f\u7528\u4f18\u60e0\u5238</p>    </div>\r\n</div>\r\n\r\n            \x3c!-- // \u5df2\u7528\u5238\u6d6e\u5c42 --\x3e\r\n            \x3c!-- // @notice --\x3e\r\n            \x3c!-- // 01. Hover `.coupons-trigger-used-inner` \u4e0b `.coupons-trigger-button` \u8282\u70b9\u51fa\u73b0 --\x3e\r\n<div class="ui-tooltips  ui-tooltips-top-left-arrow coupons-used-tooltips J_tips_block  J_coupon_used_tips" >\r\n    <div class="ui-tooltips-arrow">\r\n        <span class="arrow arrow-out">&#9670;</span>\r\n        <span class="arrow">&#9670;</span>\r\n    </div>\r\n    <div class="ui-tooltips-content">\r\n        <ul class="c-list  e-list-disc  J_coupon_used_list"></ul>    </div>\r\n</div>\r\n\r\n        </div>\r\n        <div class="coupons-trigger-inner  coupons-trigger-used-inner coupons-cancel-use-wrapper">\r\n            \x3c!--\r\n         --\x3e<span class="c-price  coupons-discount-price J_coupon_fav_money_container" id="J_fav_money_coupon">\r\n                -<span class="u-yen  u-highlight">&yen;</span><span class="u-price  u-highlight  J_coupon_fav_money">-</span>\r\n            </span>\x3c!--\r\n         --\x3e<a class="coupons-cancel-button  J_coupon_cancel  J_fake_a" href="###"\r\n               mars_sead="cart_coupon_cancel_btn"\r\n               role="button" rel="nofollow">\u53d6\u6d88\u4f7f\u7528</a>\r\n            \r\n        </div>\r\n    </div>\r\n    <div class="coupons-container J_coupon_main_body">\r\n        \x3c!-- // \u5361\u5238\u5bb9\u5668\u5e7f\u544a\u4f4d --\x3e\r\n        \x3c!-- // @notice --\x3e\r\n        \x3c!-- // 01. \u5e7f\u544a\u5728\u6709\u3001\u65e0\u5238\u7684\u60c5\u51b5\u4e0b\uff0c\u6253\u5f00\u540e\u5373\u53ef\u89c1\uff0c\u56e0\u6b64\u72ec\u7acb\u4e8e `inner` \u7ed3\u6784\u5916 --\x3e\r\n\x3c!-- \u5361\u5238\u5bb9\u5668\u5e7f\u544a\u4f4d components/coupons/partials/container-ads --\x3e\r\n<div class="coupons-container-ads-wrapper">\r\n    <div class="c-ads  coupons-container-ads  u-hidden  J_ad_ADADSN5F4J">\r\n        <p class="ads-text J_ad_text">-</p>\r\n    </div>\r\n</div>\r\n\r\n\x3c!-- \u5361\u5238\u6570\u636e components/coupons/partials/data --\x3e\r\n\x3c!-- // \u5238\u6570\u636e --\x3e\r\n\x3c!-- // @notice --\x3e\r\n\x3c!-- // 01. \u9ed8\u8ba4\u72b6\u6001\u4e3a\u300e\u5238\u6570\u636e\u52a0\u8f7d\u72b6\u6001\u300f --\x3e\r\n\x3c!-- // 02. \u9ed8\u8ba4\u53ea\u663e\u793a 6 \u6761\u5238\u6570\u636e --\x3e\r\n\x3c!-- // @states --\x3e\r\n\x3c!-- // 01. `is-coupons-data-loading`    \u5238\u6570\u636e\u52a0\u8f7d\u72b6\u6001 --\x3e\r\n\x3c!-- // 02. `is-coupons-data-load-error` \u5238\u6570\u636e\u51fa\u9519\u72b6\u6001 --\x3e\r\n\x3c!-- // 03. `is-coupons-data-empty`      \u5238\u6570\u636e\u4e3a\u7a7a\u72b6\u6001\uff0c\u6743\u91cd\u6700\u9ad8\uff0c\u4f1a\u6e05\u7a7a 01 ~ 02 \u72b6\u6001 UI \u6548\u679c --\x3e\r\n\x3c!-- // 04. `is-coupons-data-expanded`   \u5c55\u5f00\u6240\u6709\u5238\u6570\u636e\u72b6\u6001 --\x3e\r\n<div class="c-coupons-data J_coupon_tab">\r\n    \x3c!-- // \u3010\u524d\u7aef\u6a21\u677f\u3011\u5238\u6570\u636e\u884c --\x3e\r\n    <div class="c-coupons-data-activate">\r\n        <div class="c-icons  icon-coupons  c-coupons-data-empty-icon"></div>\x3c!--\r\n     --\x3e<div class="c-coupons-data-empty-container">\r\n            <p class="c-coupons-data-empty-text">\u6ca1\u6709\u53ef\u4f7f\u7528\u7684\u4f18\u60e0\u5238\uff0c\u6fc0\u6d3b\u65b0\u4f18\u60e0\u5238</p>\r\n            \x3c!-- // \u6fc0\u6d3b\u5238 --\x3e\r\n\r\n\x3c!-- \u6fc0\u6d3b\u5238 components/coupons/partials/activate.html --\x3e\r\n<div class="c-coupons-activate  J_activate_bar">\r\n    <h3 class="c-coupons-activate-title">\u6fc0\u6d3b\u4f18\u60e0\u5238\uff1a</h3>\x3c!--\r\n --\x3e<div class="c-coupons-activate-container">\r\n        <div class="c-coupons-activate-group">\r\n            <div class="c-input-group  c-coupons-activate-input-group">\r\n                <input class="ui-input  input-group-input" id="J_coupon_sn" type="text"\r\n                       placeholder="\u8bf7\u8f93\u5165\u6fc0\u6d3b\u7801" autocomplete="off"\r\n                       mars_sead="cart_coupon_act_input" />\x3c!--\r\n             --\x3e<a class="ui-btn-medium  ui-btn-secondary  ui-btn-loading  ui-btn-disable  input-group-button  c-coupons-activate-button  J_fake_a  J_coupon_activate_btn"\r\n                   href="###" mars_sead="cart_coupon_act_btn">\r\n                    <span class="ui-btn-loading-before">\u6fc0\u6d3b\u5e76\u4f7f\u7528</span>\r\n                    <span class="ui-btn-loading-after">\r\n                        <span class="ii-loading-gray-16x16"></span>\r\n                    </span>\r\n                </a>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n\r\n        </div>\r\n    </div>\r\n    <div class="c-coupons-data-scroll">\r\n        <div class="c-coupons-data-list  J_brand_coupon_list_container  u-hidden"></div>\r\n    </div>\r\n\r\n\r\n        \x3c!-- // \u6570\u636e\u52a0\u8f7d\u4e2d --\x3e\r\n    <div class="c-coupons-data-loading">\r\n        <span class="ii-loading-pink-24x24  c-coupons-data-loading-icon"></span>\x3c!--\r\n     --\x3e<span class="c-coupons-data-loading-text">\u52aa\u529b\u52a0\u8f7d\u4e2d\u2026\u2026</span>\r\n        </div>\r\n\r\n        \x3c!-- // \u6570\u636e\u52a0\u8f7d\u5931\u8d25 --\x3e\r\n    <div class="c-coupons-data-load-error">\r\n        <span class="vipFont  if-sigh  if-size-16  c-coupons-data-error-glyphicon">&#xe620;</span>\x3c!--\r\n     --\x3e<span class="c-coupons-data-error-text">\u7f51\u7edc\u4e0d\u7ed9\u529b\uff0c\u4f60\u7684\u4f18\u60e0\u5238\u6ca1\u6709\u6210\u529f\u663e\u793a\uff0c<a class="J_fake_a  J_coupon_retry" href="###" mars_sead="cart_coupon_retry">\u518d\u8bd5\u4e00\u6b21</a></span>\r\n        </div>\r\n\r\n    <div class="c-coupons-data-actions">\r\n        \x3c!-- // @notice --\x3e\r\n        \x3c!-- // 01. \u8be5\u6309\u94ae\u9ed8\u8ba4\u4e3a\u300e\u7981\u7528\u300f\u72b6\u6001\uff0c\u5f53\u8fbe\u5230\u6761\u4ef6\u8fdb\u884c\u64cd\u4f5c\u65f6\uff0c\u79fb\u9664\u7c7b `ui-btn-disable` \u65b9\u53ef\u70b9\u51fb --\x3e\r\n        <a class="ui-btn-medium  ui-btn-primary  ui-btn-loading  ui-btn-disable  c-coupons-data-submit-button  J_fake_a J_coupon_use_btn"\r\n           mars_sead="cart_coupon_use_btn"\r\n           href="###" role="button" rel="nofollow">\r\n            <span class="ui-btn-loading-before">\u786e\u5b9a\u4f7f\u7528</span>\r\n            <span class="ui-btn-loading-after">\r\n                <span class="ii-loading-gray-16x16"></span>\r\n            </span>\r\n        </a>\r\n    </div>\r\n</div>\r\n\r\n    </div>\r\n\r\n\x3c/script>\r\n\r\n\x3c!-- // \u3010\u524d\u7aef\u6a21\u677f\u3011\u53ef\u7528\u5238\u6d6e\u5c42\uff08\u666e\u901a\u6d41\u7a0b\uff09\u5185\u5bb9\uff0c\u586b\u5145\u5728 `J_coupon_use_tips_content` \u94a9\u5b50\u7c7b\u4e0b --\x3e\r\n<script type="text/html" id="J_coupon_use_tips_content_tmpl">\r\n    {{if availableCount > 0 }}\r\n        <p>\u4f60\u6709<span class="number  u-highlight  J_coupon_available_count">{{availableCount}}</span>\u5f20\u53ef\u7528\u4f18\u60e0\u5238\u54e6~</p>\r\n    {{else}}\r\n        <p>\u8fd9\u91cc\u53ef\u4ee5\u4f7f\u7528\u4f18\u60e0\u5238\u54e6~</p>\r\n    {{/if}}\r\n\x3c/script>\r\n\r\n\r\n\x3c!-- // \u3010\u524d\u7aef\u6a21\u677f\u3011\u5df2\u7528\u5238\u6d6e\u5c42\u5185\u5bb9 --\x3e\r\n<script type="text/html" id="J_coupon_used_list_tmpl">\r\n    {{each cartCouponList as couponInfo}}\r\n        <li class="list-item">\r\n            <span class="type">\u4f18\u60e0\u5238</span>\x3c!--\r\n         --\x3e<span class="discount">{{couponInfo.couponFavDesc | descnFormat}}</span>\r\n        </li>\r\n    {{/each}}\r\n\x3c/script>\r\n\r\n\r\n\x3c!-- // \u3010\u524d\u7aef\u6a21\u677f\u3011\u5238\u6570\u636e --\x3e\r\n<script type="text/html" id="J_coupon_list_row">\r\n\x3c!-- // \u5238\u6570\u636e\u884c --\x3e\r\n\x3c!-- // @notice --\x3e\r\n\x3c!-- // 01. \u6e32\u67d3\u51fa\u6765\u65f6\u540c\u6b65\u4e0b\u9762\u72b6\u6001 --\x3e\r\n\x3c!-- // @states --\x3e\r\n\x3c!-- // 01. `is-coupons-data-row-available`        \u5238\u53ef\u7528 --\x3e\r\n\x3c!-- // 02. `is-coupons-item-amount-not-satisfied` \u5546\u54c1\u91d1\u989d\u4e0d\u6ee1\u8db3 --\x3e\r\n\x3c!-- // 03. `is-coupons-item-goods-not-satisfied` \u5546\u54c1\u4e92\u65a5 --\x3e\r\n{{each data as item i}}\r\n    <div class="c-coupons-data-item  J_coupon_row  {{item.rowStatusClass}}  {{ if (i + 1) % 4 === 0 }}c-coupons-data-item-nospacing{{ /if }}">\r\n\x3c!-- // @states --\x3e\r\n\x3c!-- // 01. `is-coupons-panel-full` \u5168\u573a\u5238 --\x3e\r\n\x3c!-- // 02. `is-coupons-panel-brand` \u54c1\u724c\u5238 --\x3e\r\n\x3c!-- // 03. `is-coupons-panel-cate` \u54c1\u7c7b\u5238 --\x3e\r\n\x3c!-- // 04. `is-coupons-panel-free` \u514d\u90ae\u5238 --\x3e\r\n\x3c!-- // 05. `is-coupons-panel-selected` \u9009\u4e2d\u5238 --\x3e\r\n\x3c!-- // 06. `is-coupons-panel-single` \u5355\u54c1\u5238 --\x3e\r\n                <div class="J_coupon_panel c-coupons-panel {{item.couponStatusClass}}" mars_sead="cart_coupon_check" data-coupon_sn="{{item.coupon_sn}}">                    \r\n                    <div class="c-coupons-panel-title">\r\n                        {{if item.isShowCd}}\r\n                        <a class="c-coupons-link" href="{{item.link}}"\r\n                                mars_sead="active_te_resource_click" data_mars="{{item.dataMars}}"\r\n                                mars_exposure_sead="active_te_resource_expose" mars_exposure_module="{{item.exposureMarsData}}"\r\n                               rel="nofollow" target="_blank">\r\n                        {{/if}}\r\n                        <span class="c-coupons-panel-typename c-coupons-panel-typename2" title="{{ item.title }}">{{ item.title }}</span>\r\n                        {{if item.isShowCd}}\r\n                            </a> \r\n                        {{/if}}\r\n                    </div>\r\n                    <div class="c-coupons-panel-info">\r\n                            <span class="c-price">\r\n                                <span class="u-yen">&yen;</span>\x3c!--\r\n                             --\x3e<span class="u-price">{{ item.coupon_fav }}</span>\r\n                            </span>\x3c!--\r\n                         --\x3e<span class="c-coupons-panel-info-desc">{{if item.couponThresholdTips}}{{item.couponThresholdTips}}{{/if}}</span>\r\n                    </div>\r\n                    <div class="c-coupons-panel-date">\r\n                        {{item.stop_time}}\u524d\u53ef\u7528\r\n                    </div>\r\n                    <div class="c-coupons-panel-wave-left"></div>\r\n                    <div class="c-coupons-panel-wave-right"></div>\r\n                    <div class="c-coupons-panel-dotted"></div>\r\n                    <div class="c-coupons-panel-corner-tick"></div>\r\n                </div>\r\n                <div class="c-coupons-explain-wrapper">\r\n                            \x3c!-- // \u91d1\u989d\u4e0d\u6ee1\u8db3 --\x3e\r\n                    <div class="c-coupons-explain  c-coupons-explain-amount">\r\n                        <div class="c-coupons-explain-inner">\r\n                            {{if item.buy_more>0}}\r\n                            \u5dee<span class="u-price">{{item.buy_more}}</span>\u5143\u53ef\u7528\r\n                            {{else}}\r\n                            \u8d2d\u4e70\u6307\u5b9a\u5546\u54c1\u53ef\u7528\r\n                            {{/if}}\r\n                            {{ if item.isShowCd }}\r\n                            \x3c!--\r\n                         --\x3e<a class="c-coupons-link" href="{{item.link}}"\r\n                                mars_sead="active_te_resource_click" data_mars="{{item.dataMars}}"\r\n                                mars_exposure_sead="active_te_resource_expose" mars_exposure_module="{{item.exposureMarsData}}"\r\n                               rel="nofollow" target="_blank">\u51d1\u5355<span class="u-open-arrow">&gt;&gt;</span></a>\r\n                            {{/if}}\r\n                            </div>\r\n                    </div>\r\n                            <?php\r\n                            // \u90e8\u5206\u5546\u54c1\u4e0d\u6ee1\u8db3\r\n                            ?>\r\n                    <div class="c-coupons-explain  c-coupons-explain-goods">\r\n                        <div class="c-coupons-explain-inner">\r\n                                {{if item.unusableTips}}\r\n                                {{item.unusableTips}}\r\n                                {{else}}\r\n                                \u90e8\u5206\u5546\u54c1\u4e0d\u53ef\u91cd\u590d\u7528\u5238\r\n                                {{/if}}\x3c!--\r\n                             --\x3e\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n{{/each}}\r\n\x3c/script>\r\n\r\n\r\n\r\n\r\n\r\n\x3c!-- \u5361\u5238\u5f39\u7a97 components/coupons/modals --\x3e\r\n\r\n\x3c!-- // \u5238\u5f39\u7a97\u96c6 --\x3e\r\n\r\n\x3c!-- // \u4f18\u60e0\u5238\u6fc0\u6d3b\u7801\u8f93\u5165\u9519\u8bef\uff0c\u4e14\u6587\u6848\u4e3a\u4e00\u884c\u65f6\uff0c\u5f39\u7a97 --\x3e\r\n\x3c!-- // @notice --\x3e\r\n\x3c!-- // 01. \u4f7f\u7528 `medium` \u5c3a\u5bf8\u5f39\u7a97 --\x3e\r\n\x3c!-- // 02. `coupons-verify-modal` \u5c06\u8be5\u7c7b\u540d\u4f20\u5230\u914d\u7f6e `elStyle` \u4e2d --\x3e\r\n\x3c!-- // 03. \u5c06\u539f\u6709\u7684 `J_pop_no_dtl` \u548c `J_pop_with_dtl` \u5f39\u7a97\u5408\u5e76 --\x3e\r\n<script type="text/html" id="J_pop_with_dtl">\r\n    <div class="ui-dialog-inner">\r\n        <a class="ui-dialog-close  vipFont  J_fake_a  J_pop_close" href="###" mars_sead="{{marsOK}}"\r\n           role="button" rel="nofollow">&#xe609;</a>\r\n        <div class="ui-dialog-content">\r\n            <h3 class="ui-dialog-tips  f-text-center">\r\n                <span class="text">\r\n                    <span class="vipFont  if-sigh">&#xe603;</span>{{msg}}\r\n                </span>\r\n            </h3>\r\n            {{ if msgDtl }}\r\n                <div class="coupons-verify-explain">\r\n                    <p>{{msgDtl}}</p>\r\n                </div>\r\n            {{ /if }}\r\n        </div>\r\n        <div class="ui-dialog-command">\r\n            <a class="ui-btn-primary  ui-btn-medium  J_pop_ok  J_fake_a"\r\n               href="###" role="button" mars_sead="{{marsOK}}">\u786e\u5b9a</a>\r\n        </div>\r\n        <p class="ui-error-code">{{errorCodeInfo}}</p>\r\n    </div>\r\n\x3c/script>\r\n\r\n\r\n\x3c!-- // \u5238\u6fc0\u6d3b\u9a8c\u8bc1\u5f39\u7a97 --\x3e\r\n\x3c!-- // @notice --\x3e\r\n\x3c!-- // 01. \u4f7f\u7528 `medium` \u5c3a\u5bf8\u5f39\u7a97 --\x3e\r\n\x3c!-- // 02. `coupons-verify-modal` \u5c06\u8be5\u7c7b\u540d\u4f20\u5230\u914d\u7f6e `elStyle` \u4e2d\u3002 --\x3e\r\n<script type="text/html" id="J_pop_with_mult_dtl">\r\n    <div class="ui-dialog-inner">\r\n        <a class="ui-dialog-close  vipFont  J_fake_a  J_pop_close" href="###" mars_sead="{{marsOK}}"\r\n           role="button" rel="nofollow">&#xe609;</a>\r\n        <div class="ui-dialog-content">\r\n            <h3 class="ui-dialog-tips f-text-center">\r\n                <span class="text">\r\n                    <span class="vipFont if-sigh">&#xe603;</span>\u4f60\u8f93\u5165\u7684\u6fc0\u6d3b\u7801\u6709\u8bef\uff0c\u8bf7\u6838\u5bf9\u540e\u91cd\u65b0\u8f93\u5165\u3002\r\n                </span>\r\n            </h3>\r\n            <div class="c-coupons-verify">\r\n                <h4 class="coupons-verify-title">\u8bf7\u68c0\u67e5\uff1a</h4>\r\n                <ol class="c-list  e-list-decimal  coupons-verify-list">\r\n                    {{each msgDtl as itm i}}\r\n                    <li class="list-item">{{itm.dtl}}</li>\r\n                    {{/each}}\r\n                </ol>\r\n            </div>\r\n        </div>\r\n        <div class="ui-dialog-command">\r\n            <a class="ui-btn-medium  ui-btn-primary  J_fake_a  J_pop_ok" href="###"\r\n               role="button" rel="nofollow" mars_sead="{{marsOK}}">\u786e\u8ba4</a>\r\n        </div>\r\n        <p class="ui-error-code">{{errorCodeInfo}}</p>\r\n    </div>\r\n\x3c/script>\r\n\r\n\r\n\x3c!-- // \u4f18\u60e0\u5238\u786e\u8ba4\u53d6\u6d88\u4f18\u60e0\u53e3\u4ee4\u5f39\u7a97 --\x3e\r\n<script type="text/html" id="J_confirm_cancel_codeBonus_pop_tmpl">\r\n    <div class="ui-dialog-inner">\r\n        <div class="ui-dialog-content">\r\n            <h3 class="ui-dialog-tips  f-text-center">\r\n                <span class="text">\r\n                    <span class="vipFont  if-sigh">&#xe603;</span>{{msg}}\r\n                </span>\r\n            </h3>\r\n            {{if descn}}\r\n                <p>{{descn}}</p>\r\n            {{/if}}\r\n        </div>\r\n        <div class="ui-dialog-command">\r\n            <a class="ui-btn-primary ui-btn-medium J_fake_a J_pop_ok" href="###" role="button" data-confirm="isUsedCodeBonus" mars_sead="checkout_confirm_cancel_codeBonus_pop_yes">\u662f</a>\r\n            <a class="ui-btn-default ui-btn-medium J_fake_a J_pop_cancel" href="###" role="button" mars_sead="checkout_confirm_cancel_codeBonus_pop_no">\u5426</a>\r\n        </div>\r\n        <a class="ui-dialog-close J_pop_close vipFont J_fake_a" href="###" role="button" rel="nofollow" mars_sead="checkout_confirm_cancel_codeBonus_pop_no">&#xe609;</a>\r\n    </div>\r\n\x3c/script>';
        var Placeholder = require("../../../../../../libDeprecated/js/plugins/modules/Placeholder/Placeholder");
        var CommonPop = require("../../../../../../libDeprecated/js/plugins/modules/Pop/CommonPop");
        var CallbackUtil = require("../../../../../../libDeprecated/js/plugins/modules/OrderUtil/CallbackUtil");
        var template = require("../../../../../../libDeprecated/js/plugins/modules/template");
        var VipUI = require("../../../../../../libDeprecated/js/plugins/modules/ui");
        var ViewTools = require("../../../../../../libDeprecated/js/plugins/modules/OrderUtil/ViewTools");
        var nsAdSense = require("../../../../../../libDeprecated/js/checkout/te/4/modules/ad/nsAdSense");
        template.config("escape", false);
        var CallbackFilter = CallbackUtil.filter;
        function ieVersion(version) {
            var rule1 = !jQuery.browser.msie;
            var rule2 = jQuery.browser.msie && jQuery.browser.version - 0 >= version;
            return rule1 || rule2
        }
        var CouponView = {
            couponField: {
                brand: 3,
                all: 5,
                cate: 7,
                single: 4
            },
            unusableCode: {
                available: 0,
                needBuyMore: 1,
                brandCouponMutex: 2,
                brandNotFound: 3,
                other: 4,
                v1BrandCouponMutex: 8,
                couponCategoryMutex: -100
            },
            data: {
                moSwitch: 1,
                lastCheck: {
                    id: "",
                    check: false
                }
            },
            events: {
                pub: {
                    expandCoupon: "expand.coupon",
                    changeCouponId: "change.coupon",
                    load: "coupon.view.load",
                    activate: "coupon.view.activate",
                    use: "coupon.view.use",
                    change: "coupon.view.change",
                    changeToActivate: "coupon.view.changeToActivate",
                    cancel: "coupon.view.cancel",
                    reload: "coupon.view.reload",
                    retry: "coupon.view.retry",
                    chkTimeout: "coupon.timeout.check",
                    pmsCouponClick: "coupon.pms.click"
                },
                sub: {
                    loadSuccess: "coupon.model.loadSuccess",
                    loadFail: "coupon.model.loadFail",
                    activateSuccess: "coupon.model.activateSuccess",
                    activateNoUseSuccess: "coupon.model.activateNotUseSuccess",
                    activateFail: "coupon.model.activateFail",
                    useSuccess: "coupon.model.useSuccess",
                    useFail: "coupon.model.useFail",
                    cancelSuccess: "coupon.model.cancelSuccess",
                    cancelFail: "coupon.model.cancelFail",
                    pmsCouponListStatusChange: "coupon.pms.statusChange",
                    pmsCouponListStatusChangeFail: "coupon.pms.statusChangeFail",
                    loadAllCouponsFail: "load.allCoupon.fail",
                    loadAllCouponsSuccess: "load.allCoupon.success"
                }
            },
            tmpl: {
                couponTmpl: "J_coupon_tpl",
                couponRow: "J_coupon_list_row",
                popNoDtl: null,
                popWithDtlLeft: null,
                popWithDtl: null,
                normalBtnTmpl: "J_normal_use_btn_tmpl",
                usedCouponListTmpl: "J_coupon_used_list_tmpl",
                couponTipsContentTmpl: "J_coupon_use_tips_content_tmpl",
                errorPopWithOneDtlTmpl: "J_pop_with_dtl",
                errorPopWithMultDtlTmpl: "J_pop_with_mult_dtl"
            },
            viewData: {
                all: {
                    used: false,
                    count: 0,
                    availableCount: 0,
                    needToBuy: 0,
                    opened: false,
                    showHasCouponTips: false,
                    couponTipsShowed: false,
                    currIds: [],
                    operating: false,
                    isChanging: false
                },
                couponBtn: {
                    successTipsShow: false,
                    resetTipsShow: false,
                    couponFavMoney: 0,
                    usedCount: 0,
                    cartCouponList: [],
                    couponList: null
                },
                activateBar: {
                    activateType: 0,
                    activateSn: "",
                    activating: false
                },
                couponTab: {
                    used: false,
                    using: false,
                    loading: false,
                    loaded: false,
                    hasFail: false,
                    noCoupon: false,
                    loadedCouponAmount: 0,
                    noAvailableCoupon: false,
                    selectIds: [],
                    selectType: -1,
                    data: []
                }
            },
            UI: {
                jqModule: null,
                jqActivateBar: null,
                jqCouponTab: null,
                jqCurrActivateSn: null,
                activateTypeDropDown: null,
                couponSnPlaceholder: null,
                resetTooltips: null,
                usedSuccessTooltips: null,
                couponModuleButtonSelector: ".J_coupon_module_btn",
                couponUsedButtonSelector: ".J_coupon_used_block",
                couponUsedTipsSelector: ".J_coupon_used_tips",
                couponMainBody: ".J_coupon_main_body",
                couponTabContainer: ".J_coupon_tab",
                reinfoeceTooltips: ".J_reinfoece_tips",
                reinfoeceTooltipsContent: ".J_reinfoece_tips_content",
                reinfoeceTooltipsClose: ".J_close_reinfoece_tips",
                couponCancelBtnSelector: ".J_coupon_cancel",
                couponReloadBtnSelector: ".J_coupon_retry",
                commonTipsContainer: ".J_tips_container",
                couponRowToolTipsSelector: ".J_tips_block",
                activateBtnSelector: ".J_coupon_activate_btn",
                couponRowSelector: ".J_coupon_row",
                couponPanelSelector: ".J_coupon_panel",
                useCouponBtnSelector: ".J_coupon_use_btn",
                couponSNInputSelector: "#J_coupon_sn",
                couponDetailItemSelector: ".J_coupon_detail_item",
                couponDetailViewMoreBtnSelector: ".J_coupon_read_more_detail",
                usedCouponNumSelector: ".J_coupon_used_num",
                usedCouponAmountSelector: ".J_coupon_fav_money",
                usedCouponAmountContainerSelector: ".J_coupon_fav_money_container",
                usedCouponListContainerSelector: ".J_coupon_used_list",
                couponResetTipsSelector: ".J_coupon_reset_tips",
                couponResetTipsCloseSelector: ".J_coupon_reset_tips_close",
                useSuccessTipsSelector: ".J_coupon_used_success_tooltips",
                hasCouponTipsSelector: ".J_has_coupon_tips",
                hasCouponTipsCloseSelector: ".J_has_coupon_tips_close",
                hasCouponCountSelector: ".J_coupon_available_count",
                hasCouponTipsContentSelector: ".J_coupon_use_tips_content",
                hasCouponTooltips: null,
                totalCash: ".J_info_total"
            },
            status: {
                tabOpen: "is-coupons-expanded",
                isDataLoading: "is-coupons-data-loading",
                hasDataError: "is-coupons-data-load-error",
                noCoupon: "is-coupons-data-empty",
                couponAvailable: "is-coupons-data-row-available",
                couponAmountNotStatisfied: "is-coupons-item-amount-not-satisfied",
                couponGoodsNotStatisfied: "is-coupons-item-goods-not-satisfied",
                couponFull: "is-coupons-panel-full",
                couponBrand: "is-coupons-panel-brand",
                couponCate: "is-coupons-panel-cate",
                couponFree: "is-coupons-panel-free",
                couponSingle: "is-coupons-panel-single",
                couponSelected: "is-coupons-panel-selected",
                couponUsed: "is-coupons-used",
                tipsOnHover: "is-tooltips-trigger-active",
                isActivateBarActivated: "is-activate-bar-activated",
                isBtnDisabled: "ui-btn-disable"
            },
            init: function(data) {
                $("body").append(CouponTpl);
                var that = this;
                this.data.couponTipsAd = data.couponTipsAd;
                this.UI.jqModule = $("#J_coupon_module");
                var tmpHTML = template(that.tmpl.couponTmpl, {});
                that.UI.jqModule.html(tmpHTML);
                this.UI.jqActivateBar = this.UI.jqModule.find(".J_activate_bar");
                this.UI.jqCouponTab = this.UI.jqModule.find(this.UI.couponTabContainer);
                this.UI.jqCurrActivateSn = $(this.UI.couponSNInputSelector);
                this.UI.activateTypeDropDown = new VipUI.DropDown({
                    jqContainer: this.UI.jqActivateBar.find(".J_activateTypeDropDown"),
                    defaultValue: 0,
                    onSelect: function(text, value, jqOption) {
                        that.viewData.activateBar.activateType = value
                    }
                });
                this.UI.couponSnPlaceholder = new Placeholder({
                    jqHolders: this.UI.jqCurrActivateSn
                });
                this.viewData.all.couponTipsShowed = false;
                this.UI.resetTooltips = this.UI.jqModule.find(this.UI.couponResetTipsSelector);
                this.UI.usedSuccessTooltips = this.UI.jqModule.find(this.UI.useSuccessTipsSelector);
                this.UI.hasCouponTooltips = this.UI.jqModule.find(this.UI.hasCouponTipsSelector);
                this.render();
                this.bindEvent();
                this.bindCtrlEvent()
            },
            render: function() {
                var myTimeout;
                var _render = function() {
                    ViewTools.addWhileTrue(this.UI.jqModule, this.viewData.all.opened, this.status.tabOpen);
                    var jqCouponBody = this.UI.jqModule.find(this.UI.couponMainBody);
                    jqCouponBody.stop(true, true);
                    if (this.viewData.all.opened)
                        if (ieVersion(8))
                            jqCouponBody.slideDown(300);
                        else
                            jqCouponBody.show();
                    else
                        jqCouponBody.hide();
                    this.evaluateTabState(true);
                    this.renderCouponBtn();
                    this.renderActivateBar();
                    this.renderTab();
                    this.UI.jqModule.trigger("resize")
                };
                return function() {
                    var that = this;
                    clearTimeout(myTimeout);
                    myTimeout = setTimeout(function() {
                        _render.call(that)
                    }, 100)
                }
            }
            .call(this),
            renderCouponBtn: function() {
                var publicState = this.viewData.all;
                var state = this.viewData.couponBtn;
                ViewTools.switchTooltips(this.UI.jqModule.find(this.UI.reinfoeceTooltips), publicState.showHasCouponTips);
                if (publicState.showHasCouponTips)
                    this.UI.jqModule.find(this.UI.hasCouponTipsContentSelector).html(template(this.tmpl.couponTipsContentTmpl, publicState));
                ViewTools.switchTooltips(this.UI.hasCouponTooltips, publicState.showHasCouponTips);
                ViewTools.switchTooltips(this.UI.resetTooltips, state.resetTipsShow);
                if (publicState.used) {
                    this.UI.jqModule.find(this.UI.usedCouponNumSelector).html(state.usedCount);
                    ViewTools.addWhileTrue(this.UI.jqModule.find(this.UI.usedCouponAmountContainerSelector), state.couponFavMoney == 0, "u-hidden");
                    this.UI.jqModule.find(this.UI.usedCouponListContainerSelector).html(template(this.tmpl.usedCouponListTmpl, CouponView.viewData.couponBtn))
                }
                ViewTools.addWhileTrue(this.UI.jqModule, publicState.used, this.status.couponUsed);
                ViewTools.switchTooltips(this.UI.usedSuccessTooltips, state.successTipsShow)
            },
            renderActivateBar: function() {
                var state = CouponView.viewData.activateBar;
                this.UI.activateTypeDropDown.selectOptionByValue(state.activateType)
            },
            renderTab: function() {
                var that = this;
                var state = CouponView.viewData.couponTab;
                var couponTab = this.UI.jqCouponTab;
                var isTabLoading;
                var isTabTimeout;
                isTabLoading = state.loading && !state.loaded;
                isTabTimeout = !state.loading && state.hasFail;
                var jqUseBtn = couponTab.find(this.UI.useCouponBtnSelector);
                ViewTools.addWhileTrue(couponTab, isTabLoading, this.status.isDataLoading);
                ViewTools.addWhileTrue(couponTab, isTabTimeout, this.status.hasDataError);
                ViewTools.switchButtonLoading(jqUseBtn, state.using);
                ViewTools.switchButtonDisable(jqUseBtn, state.noAvailableCoupon || (state.selectIds.length === 0 || state.using));
                ViewTools.addWhileTrue(couponTab, !isTabLoading && !isTabTimeout);
                ViewTools.addWhileTrue(couponTab, !state.loading && state.noCoupon, this.status.noCoupon)
            },
            setViewData: function(viewDataToChange, cb) {
                if (viewDataToChange.all && (viewDataToChange.all.operating && this.viewData.all.operating))
                    return false;
                if (viewDataToChange.all !== undefined && (viewDataToChange.all.opened !== undefined && (viewDataToChange.all.opened === false && this.viewData.all.opened === true))) {
                    var currTop = $(window).scrollTop();
                    var couponTop = this.UI.jqModule.offset().top;
                    if (currTop > couponTop)
                        window.scrollTo(0, this.UI.jqModule.offset().top - 100)
                }
                $.extend(true, this.viewData, viewDataToChange);
                this.render();
                cb && cb.call(this)
            },
            filter: function(autoKeepStock, cb) {
                $.Listeners.pub(CouponView.events.pub.chkTimeout).success({
                    cb: cb,
                    autoKeepStock: autoKeepStock || false
                })
            },
            bindEvent: function() {
                var that = this;
                this.UI.jqModule.on("click", this.UI.couponModuleButtonSelector + "," + this.UI.couponUsedButtonSelector, function(e) {
                    that.filter(true, function() {
                        if (that.viewData.all.opened)
                            that.closeTab();
                        else {
                            that.setViewData({
                                couponTab: {
                                    loading: !that.viewData.couponTab.loaded
                                }
                            }, function() {
                                if (that.viewData.all.toReload)
                                    that.doReload();
                                else
                                    $.Listeners.pub(that.events.pub.load).success()
                            });
                            that.openTab()
                        }
                    })
                }).on("click", this.UI.activateBtnSelector, function() {
                    var jqBtn = $(this);
                    if (!VipUI.Button.isDisable(jqBtn)) {
                        VipUI.Button.loading(jqBtn);
                        that.filter(true, function() {
                            that.startActivate()
                        })
                    }
                }).on("keyup", this.UI.couponSNInputSelector, function() {
                    that.UI.couponSnPlaceholder.removeAllHolder();
                    that.lightActiveBtn(this.value);
                    that.UI.couponSnPlaceholder.addAllHolder()
                }).on("blur", this.UI.couponSNInputSelector, function() {
                    that.UI.couponSnPlaceholder.removeAllHolder();
                    that.viewData.activateBar.activateSn = this.value;
                    that.lightActiveBtn(this.value);
                    that.UI.couponSnPlaceholder.addAllHolder()
                }).on("click", this.UI.couponRowSelector, function(event) {
                    event.stopPropagation();
                    var e = event || window.event;
                    var target = e.target || e.srcElement;
                    var jqThis = $(this);
                    if (jqThis.hasClass(that.status.couponAvailable)) {
                        if (that.viewData.all.operating)
                            return false;
                        that.filter(true, function() {
                            setTimeout(function() {
                                that.setCouponIds(jqThis.find(that.UI.couponPanelSelector).data("coupon_sn"), !jqThis.find(that.UI.couponPanelSelector).hasClass(that.status.couponSelected))
                            }, 0)
                        })
                    }
                }).on("click", this.UI.useCouponBtnSelector, function() {
                    that.filter(true, function() {
                        that.startUseCoupon()
                    })
                }).on("click", this.UI.couponCancelBtnSelector, function() {
                    that.filter(true, function() {
                        that.startCancel()
                    })
                }).on("click", this.UI.couponReloadBtnSelector, function() {
                    that.filter(true, function() {
                        that.starRetry()
                    })
                }).on("click", this.UI.couponResetTipsCloseSelector, function() {
                    that.setViewData({
                        couponBtn: {
                            resetTipsShow: false
                        }
                    })
                }).on("click", this.UI.reinfoeceTooltipsClose, function() {
                    that.setViewData({
                        all: {
                            couponTipsShowed: true,
                            showHasCouponTips: false
                        }
                    })
                }).on("click", this.UI.hasCouponTipsCloseSelector, function() {
                    that.setViewData({
                        all: {
                            couponTipsShowed: true,
                            showHasCouponTips: false
                        }
                    });
                    $.Storage.set("CouponBtnTipsShowed", true, 86400)
                }).on("mouseenter", this.UI.commonTipsContainer, function() {
                    var jqThis = $(this);
                    jqThis.addClass(that.status.tipsOnHover);
                    VipUI.Tooltips.open(jqThis.find(that.UI.couponRowToolTipsSelector))
                }).on("mouseleave", this.UI.commonTipsContainer, function() {
                    var jqThis = $(this);
                    jqThis.removeClass(that.status.tipsOnHover);
                    VipUI.Tooltips.close(jqThis.find(that.UI.couponRowToolTipsSelector))
                }).on("click", this.UI.couponDetailViewMoreBtnSelector, function(e) {
                    e.stopPropagation();
                    e.preventDefault();
                    var jqContainer = $(this).closest(that.UI.couponRowToolTipsSelector);
                    jqContainer.find(that.UI.couponDetailItemSelector).removeClass("u-hidden");
                    jqContainer.find("." + that.status.couponDetailHasMore).removeClass(that.status.couponDetailHasMore)
                }).on("mouseenter", this.UI.couponUsedButtonSelector, function() {}).on("mouseleave", this.UI.couponUsedButtonSelector, function() {})
            },
            bindCtrlEvent: function() {
                var that = this;
                $.Listeners.sub(CouponView.events.sub.loadSuccess).onsuccess(function(data) {
                    if (data.moSwitch != null)
                        that.data.moSwitch = data.moSwitch;
                    that.onCouponLoadSuccess(data.list, data.fromCache)
                });
                $.Listeners.sub(CouponView.events.sub.loadFail).onsuccess(CallbackFilter("code", "cart", function(data) {
                    that.onCouponLoadFail()
                }));
                $.Listeners.sub(CouponView.events.sub.loadAllCouponsFail).onsuccess(CallbackFilter("code", "cart", function(data) {
                    that.onCouponLoadAllFail()
                }));
                $.Listeners.sub(CouponView.events.sub.useSuccess).onsuccess(function(data) {
                    that.endUseCoupon(true, data.num, data.couponFavTotal, data.cartCouponList)
                });
                $.Listeners.sub(CouponView.events.sub.loadAllCouponsSuccess).onsuccess(function(data) {
                    that.onCouponLoadAllSuccess()
                });
                $.Listeners.sub(CouponView.events.sub.useFail).onsuccess(CallbackFilter("code", "cart", function(data) {
                    that.endUseCoupon(false, data.num);
                    if (data.code != -1)
                        that.useCouponFail(data)
                }));
                $.Listeners.sub(CouponView.events.sub.cancelSuccess).onsuccess(function(data) {
                    that.endCancel(true);
                    if (that.autoCancelState == 1) {
                        if (that.cancelAndReload)
                            that.startReload();
                        that.autoCancelState = 0;
                        that.setViewData({
                            couponBtn: {
                                resetTipsShow: true
                            }
                        })
                    }
                });
                $.Listeners.sub(CouponView.events.sub.cancelFail).onsuccess(CallbackFilter("code", "cart", function(data) {
                    that.endCancel(false);
                    if (data.code != -1)
                        if (that.autoCancelState == 1) {
                            if (that.cancelAndReload)
                                that.startReload();
                            that.autoCancelState = 0;
                            $.Listeners.pub("cart.showError").success({
                                msg: "\u56e0\u5220\u9664\u6216\u4fee\u6539\u5546\u54c1\uff0c\u4f18\u60e0\u5238\u4f1a\u81ea\u52a8\u53d6\u6d88\uff0c\u4f46\u81ea\u52a8\u53d6\u6d88\u5931\u8d25\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u3002",
                                marsOK: "cart_bc_common_button"
                            })
                        } else
                            that.showPop(data.msg, null, "cart_coupon_cancelfail_btn", data.errorCodeInfo || "")
                }));
                $.Listeners.sub(CouponView.events.sub.activateSuccess).onsuccess(function(data) {
                    that.endActivate(true, data.couponInfo[0].id, data.amounts, data.couponInfo)
                });
                $.Listeners.sub(CouponView.events.sub.activateFail).onsuccess(CallbackFilter("code", "cart", function(data) {
                    that.endActivate(false);
                    if (data.code == 902)
                        that.UI.jqCurrActivateSn.val("").trigger("blur");
                    if (data.code == 1078)
                        that.showPop(data.msg, data.msgDtl, "cart_coupon_newfail_btn", data.errorCodeInfo || "");
                    else if (data.code == 906)
                        that.showPop(data.msg, data.msgDtl, data.closeMars, data.errorCodeInfo || "");
                    else if (data.code != -1)
                        that.showPop(data.msg, data.msgDtl, "cart_coupon_fail1_btn", data.errorCodeInfo || "")
                }));
                $.Listeners.sub(this.events.sub.pmsCouponListStatusChange).onsuccess(function(data) {
                    that.endPmsCouponCheck(true, data.list)
                });
                $.Listeners.sub(this.events.sub.pmsCouponListStatusChangeFail).onsuccess(function(data) {
                    that.endPmsCouponCheck(false, null)
                });
                $.Listeners.sub("cart.changed").onsuccess(function(data) {
                    that.startReload()
                })
            },
            setTips: function(tips, isShow) {
                if (tips.size() != 0)
                    ViewTools.addWhileTrue(tips, !isShow, "f-hide")
            },
            openTab: function() {
                this.viewData.couponTab.selectIds = this.viewData.all.currIds.slice(0);
                this.setViewData({
                    all: {
                        couponTipsShowed: true,
                        showHasCouponTips: false,
                        opened: true
                    },
                    couponTab: {},
                    couponBtn: {
                        resetTipsShow: false
                    }
                }, function() {
                    this.manageChecked()
                });
                $("html,body").animate({
                    scrollTop: $("#J_coupon_module").offset().top
                }, 500)
            },
            closeTab: function() {
                this.setViewData({
                    all: {
                        opened: false
                    }
                })
            },
            starRetry: function() {
                var couponData = this.viewData.couponTab;
                if (couponData.loadFail) {
                    couponData.loadFail = false;
                    couponData.loaded = false
                }
                this.setViewData({
                    couponTab: {
                        loading: this.viewData.couponTab.hasFail,
                        loaded: !this.viewData.couponTab.hasFail
                    }
                });
                $.Listeners.pub(this.events.pub.retry).success()
            },
            startReload: function() {
                var hasLoaded = this.viewData.couponTab.loaded;
                var isOpened = this.viewData.all.opened;
                this.viewData.all.toReload = true;
                if (hasLoaded && isOpened)
                    this.doReload()
            },
            doReload: function() {
                this.viewData.all.toReload = false;
                var vo = this.viewData.couponTab;
                vo.data = [];
                vo.selectIds = [];
                this.setViewData({
                    couponTab: {
                        loading: true,
                        loaded: false
                    }
                });
                $.Listeners.pub(CouponView.events.pub.reload).success({})
            },
            startActivate: function() {
                var that = this;
                this.setViewData({
                    all: {
                        operating: true
                    },
                    activateBar: {
                        activating: true
                    }
                }, function() {
                    that.UI.jqCurrActivateSn.prop("readonly", true);
                    that.UI.activateTypeDropDown.disable();
                    that.UI.couponSnPlaceholder.removeAllHolder();
                    $.Listeners.pub(CouponView.events.pub.activate).success({
                        num: $.trim(that.UI.jqCurrActivateSn.val())
                    })
                })
            },
            endActivate: function(isSuccess, id, type, amounts, couponInfo) {
                var that = this;
                VipUI.Button.reset(this.UI.jqModule.find(this.UI.activateBtnSelector));
                this.viewData.all.currIds = isSuccess ? id.split(",") : [];
                this.setViewData({
                    all: {
                        operating: false,
                        used: isSuccess,
                        opened: !isSuccess,
                        isChanging: false
                    },
                    couponBtn: {},
                    activateBar: {
                        activating: false
                    }
                }, function() {
                    that.UI.jqCurrActivateSn.prop("readonly", false);
                    that.UI.activateTypeDropDown.enable();
                    that.UI.couponSnPlaceholder.addAllHolder();
                    if (isSuccess) {
                        that.setViewData({
                            couponBtn: {
                                successTipsShow: true
                            }
                        });
                        setTimeout(function() {
                            that.setViewData({
                                couponBtn: {
                                    successTipsShow: false
                                }
                            })
                        }, 3E3);
                        that.UI.jqCurrActivateSn.val("").trigger("blur");
                        $.Listeners.pub(this.events.pub.use).success({
                            favourable_id: id
                        })
                    }
                })
            },
            getUsedCoupon: function() {
                var couponSns = []
                  , couponList = this.viewData.couponBtn.couponList;
                for (var i = 0, len = couponList.length; i < len; i++)
                    couponSns.push(couponList[i].id);
                return couponSns.join(",")
            },
            endUseCoupon: function(isSuccess, id, couponFavTotal, cartCouponList) {
                var that = this;
                this.viewData.all.currIds = isSuccess ? id.split(",") : [];
                this.viewData.couponBtn.cartCouponList = [];
                this.setViewData({
                    all: {
                        couponTipsShowed: true,
                        operating: false,
                        used: isSuccess,
                        opened: !isSuccess,
                        isChanging: false
                    },
                    couponBtn: {
                        couponFavMoney: couponFavTotal || 0,
                        cartCouponList: cartCouponList,
                        usedCount: isSuccess ? this.viewData.all.currIds.length : 0
                    },
                    couponTab: {
                        used: isSuccess,
                        using: false
                    }
                }, function() {
                    if (isSuccess) {
                        this.manageChecked();
                        that.setViewData({
                            couponBtn: {
                                successTipsShow: true
                            }
                        });
                        setTimeout(function() {
                            that.setViewData({
                                couponBtn: {
                                    successTipsShow: false
                                }
                            })
                        }, 3E3)
                    }
                })
            },
            useCouponFail: function(data) {
                this.showPop(data.msg, null, "cart_coupon_fail3_btn", data.errorCodeInfo || "")
            },
            startCancel: function() {
                this.setViewData({
                    all: {
                        operating: true
                    }
                }, function() {
                    $.Listeners.pub(this.events.pub.cancel).success()
                })
            },
            endCancel: function(isSuccess) {
                var that = this;
                var isChanging = this.viewData.all.isChanging;
                var data = {
                    all: {
                        operating: isChanging || false
                    }
                };
                if (isSuccess) {
                    data.all.used = false;
                    data.couponBtn = {
                        couponFavMoney: 0,
                        usedCount: 0
                    };
                    data.couponTab = {
                        used: false
                    };
                    this.viewData.all.currIds = [];
                    this.viewData.couponBtn.couponList = [];
                    this.viewData.couponTab.selectIds = []
                }
                this.setViewData(data, function() {
                    if (isSuccess) {
                        this.manageChecked();
                        if (this.viewData.all.opened)
                            this.startPmsCouponCheck()
                    }
                })
            },
            startUseCoupon: function() {
                var viewData = this.viewData;
                var couponIds = viewData.couponTab.selectIds.join(",");
                if (viewData.couponTab.selectIds.length > 0)
                    this.setViewData({
                        all: {
                            operating: true
                        },
                        couponTab: {
                            using: true
                        }
                    }, function() {
                        $.Listeners.pub(this.events.pub.use).success({
                            favourable_id: couponIds
                        })
                    })
            },
            couponMaxCount: 5,
            onCouponLoadSuccess: function(listData, fromCache) {
                var max = CouponView.couponMaxCount;
                var jqCouponContainer = this.UI.jqCouponTab.find(".J_brand_coupon_list_container");
                var viewObject = CouponView.viewData.couponTab;
                var html = "";
                viewObject.loaded = true;
                viewObject.loadFail = false;
                viewObject.data = listData;
                if (listData.length > 0) {
                    html = this.renderList(this.tmpl.couponRow, viewObject);
                    jqCouponContainer.removeClass("u-hidden")
                } else
                    jqCouponContainer.addClass("u-hidden");
                jqCouponContainer.html(html);
                this.manageChecked();
                VipUI.Checkbox.refreshUI();
                this.loadedAmount();
                this.evaluateTabState(fromCache);
                this.render()
            },
            onCouponLoadAllSuccess: function(fromCache) {
                this.loadedAmount();
                this.evaluateTabState(fromCache)
            },
            renderList: function(tmpl, viewObject) {
                var iMax = viewObject.data ? viewObject.data.length : 0
                  , tmpClickMarsData = []
                  , tmpExposureMarsData = [];
                for (var i = 0; i < iMax; i++) {
                    var isShowCd = true;
                    var item = viewObject.data[i];
                    tmpClickMarsData = [];
                    tmpExposureMarsData = [];
                    item.isDisplayBrandName = 1;
                    if (item.styleType)
                        if (item.styleType == "1")
                            item.couponStatusClass = this.status.couponFull;
                        else if (item.styleType == "2")
                            item.couponStatusClass = this.status.couponCate;
                        else if (item.styleType == "3")
                            item.couponStatusClass = this.status.couponBrand;
                        else if (item.styleType == "4")
                            item.couponStatusClass = this.status.couponSingle;
                    if (this.data.moSwitch) {
                        item.link = "//list.vip.com/active.html?postfreeType=pms_coupon&addonPrice=" + item.buy_more + "&amount=" + item.use_limit + "&activeNos=" + item.coupon_id + "&clickFrom=" + "cart_couponlist";
                        item.isShowCd = isShowCd;
                        if (item.selectable)
                            if (item.selectable == 0)
                                if (item.unusable_code == this.unusableCode.needBuyMore)
                                    item.rowStatusClass = this.status.couponAmountNotStatisfied;
                                else
                                    item.rowStatusClass = this.status.couponGoodsNotStatisfied;
                            else
                                item.rowStatusClass = this.status.couponAvailable;
                        else if (item.usable && item.usable == 1)
                            item.rowStatusClass = this.status.couponAvailable;
                        else
                            switch (parseInt(item.unusable_code)) {
                            case this.unusableCode.needBuyMore:
                                item.rowStatusClass = this.status.couponAmountNotStatisfied;
                                if (item.styleType == "1") {
                                    tmpClickMarsData.push("", "", item.coupon_sn, "X-3", 3, "");
                                    tmpExposureMarsData.push("pc", "recommend", -99, 3, -99, 110, "")
                                }
                                item.dataMars = tmpClickMarsData.join("|");
                                item.exposureMarsData = tmpExposureMarsData.join("|");
                                break;
                            case this.unusableCode.brandCouponMutex:
                                item.rowStatusClass = this.status.couponGoodsNotStatisfied;
                                break;
                            case this.unusableCode.v1BrandCouponMutex:
                                item.rowStatusClass = this.status.couponGoodsNotStatisfied;
                                break
                            }
                    } else if (item.usable) {
                        item.rowStatusClass = this.status.couponAvailable;
                        if (item.styleType == "4") {
                            item.link = "//list.vip.com/buymore.php?spe_name=" + item.coupon_fav_desc + "&active_unit=" + encodeURI("\u5143") + "&combine_price=" + item.buy_more + "&couponNos=" + item.coupon_id;
                            item.isShowCd = isShowCd
                        }
                    } else
                        switch (item.unusable_code) {
                        case this.unusableCode.needBuyMore:
                            item.rowStatusClass = this.status.couponAmountNotStatisfied;
                            if (item.styleType == "4") {
                                item.link = "//list.vip.com/buymore.php?spe_name=" + item.coupon_fav_desc + "&active_unit=" + encodeURI("\u5143") + "&combine_price=" + item.buy_more + "&couponNos=" + item.coupon_id;
                                item.isShowCd = isShowCd
                            } else if (item.styleType == "1") {
                                item.link = "//www.vip.com/?from=cart_coupon";
                                item.isShowCd = isShowCd;
                                tmpClickMarsData.push("", "", item.coupon_sn, "X-3", 3, "");
                                tmpExposureMarsData.push("pc", "recommend", -99, 3, -99, 110, "")
                            } else if (item.styleType == "2") {
                                item.link = "//www.vip.com/?from=cart_coupon";
                                item.isShowCd = isShowCd
                            } else {
                                item.link = "//www.vip.com/?from=cart_err_coupon_feild";
                                item.isShowCd = isShowCd;
                                VIPSHOP.log("error coupon_field:" + item.coupon_field)
                            }
                            item.dataMars = tmpClickMarsData.join("|");
                            item.exposureMarsData = tmpExposureMarsData.join("|");
                            break;
                        case this.unusableCode.brandCouponMutex:
                            item.rowStatusClass = this.status.couponGoodsNotStatisfied;
                            break
                        }
                }
                return template(tmpl, viewObject)
            },
            onCouponLoadFail: function() {
                var viewObject = CouponView.viewData.couponTab;
                viewObject.loaded = true;
                viewObject.loadFail = true;
                this.evaluateTabState();
                this.render()
            },
            onCouponLoadAllFail: function() {
                var viewObject = [];
                viewObject = CouponView.viewData.couponTab;
                viewObject.loaded = true;
                viewObject.loadFail = true;
                CouponView.viewData.couponTab.loaded = true;
                CouponView.viewData.couponTab.hasFail = true;
                CouponView.viewData.couponTab.loading = false;
                CouponView.viewData.couponTab.noCoupon = false;
                this.renderTab()
            },
            loadedAmount: function() {
                var tabVO = CouponView.viewData.couponTab;
                tabVO.loadedCouponAmount = 0;
                tabVO.loaded && tabVO.loadedCouponAmount++
            },
            evaluateTabState: function(fromCache) {
                var tabVO = CouponView.viewData.couponTab;
                var allVO = CouponView.viewData.all;
                var loadedCount = 0
                  , failCount = 0
                  , couponCount = 0
                  , availableCount = 0;
                tabVO.noAvailableCoupon = true;
                var stateData = tabVO
                  , couponData = stateData.data
                  , listDataCount = couponData.length;
                if (stateData.loaded)
                    loadedCount++;
                if (stateData.loadFail)
                    failCount++;
                if (listDataCount > 0)
                    couponCount += listDataCount;
                for (var i = 0, iMax = listDataCount; i < iMax; i++) {
                    var item = couponData[i];
                    if (item.usable)
                        availableCount++;
                    tabVO.noAvailableCoupon = tabVO.noAvailableCoupon && !item.usable
                }
                allVO.count = couponCount;
                allVO.availableCount = availableCount;
                tabVO.loading = loadedCount != tabVO.loadedCouponAmount;
                tabVO.loaded = loadedCount == tabVO.loadedCouponAmount;
                tabVO.hasFail = failCount > 0;
                tabVO.noCoupon = !tabVO.hasFail && couponCount == 0;
                if (!fromCache || (allVO.opened || allVO.used))
                    allVO.showHasCouponTips = !allVO.couponTipsShowed && allVO.count > 0
            },
            showPop: function(msg, msgDtl, marsOk, errorCodeInfo) {
                var popTmplId, elStyle = "coupons-verify-modal";
                if (msgDtl && $.isArray(msgDtl)) {
                    popTmplId = this.tmpl.errorPopWithMultDtlTmpl;
                    var dest = [];
                    for (var i = 0, iMax = msgDtl.length; i < iMax; i++) {
                        var item = msgDtl[i];
                        dest.push({
                            dtl: item
                        })
                    }
                    msgDtl = dest
                } else
                    popTmplId = this.tmpl.errorPopWithOneDtlTmpl;
                var data = {
                    msg: msg,
                    msgDtl: msgDtl,
                    marsOK: marsOk || "cart_coupon_common_ok",
                    errorCodeInfo: errorCodeInfo
                };
                var pop = new CommonPop({
                    tmplId: popTmplId,
                    popConfig: {
                        elStyle: elStyle,
                        size: "medium",
                        autoResize: false,
                        customStyle: false
                    }
                });
                pop.open(data)
            },
            setCouponIds: function(couponId, isChecked) {
                this.data.lastCheck.id = couponId;
                this.data.lastCheck.check = isChecked;
                if (isChecked && this.viewData.couponTab.selectIds.indexOf(couponId) == -1)
                    this.viewData.couponTab.selectIds.push(couponId);
                else
                    for (var i = 0, iMax = this.viewData.couponTab.selectIds.length; i < iMax; i++) {
                        var currId = this.viewData.couponTab.selectIds[i];
                        if (currId == couponId)
                            this.viewData.couponTab.selectIds.splice(i, 1)
                    }
                this.startPmsCouponCheck()
            },
            manageChecked: function() {
                var that = this;
                var ids = this.viewData.couponTab.selectIds.join(",");
                this.UI.jqCouponTab.find(this.UI.couponPanelSelector).each(function() {
                    var jqCurr = $(this);
                    ViewTools.addWhileTrue(jqCurr, ids.indexOf(jqCurr.data("coupon_sn")) > -1, that.status.couponSelected)
                })
            },
            getCouponRowById: function(couponId) {
                return this.UI.jqCouponTab.find("[value=" + couponId + "]")
            },
            startPmsCouponCheck: function() {
                var that = this;
                this.setViewData({
                    all: {
                        operating: true
                    }
                }, function() {
                    $.Listeners.pub(this.events.pub.pmsCouponClick).success({
                        selectIds: that.viewData.couponTab.selectIds.join(","),
                        totalCash: $(that.UI.totalCash).html()
                    })
                })
            },
            endPmsCouponCheck: function(isSuccess, couponList) {
                var that = this;
                this.setViewData({
                    all: {
                        operating: false
                    }
                }, function() {
                    var lastCheck = this.data.lastCheck;
                    if (isSuccess)
                        that.onCouponLoadSuccess(couponList, false);
                    else {
                        var jqLast = that.getCouponRowById(lastCheck.id);
                        if (jqLast.size() > 0) {
                            VipUI.Checkbox.updateUI(jqLast, !lastCheck.check, false);
                            if (lastCheck.check)
                                this.viewData.couponTab.selectIds.pop();
                            else
                                this.viewData.couponTab.selectIds.push(lastCheck.id)
                        }
                    }
                })
            },
            lightActiveBtn: function(value) {
                var jqBtn = this.UI.jqModule.find(this.UI.activateBtnSelector);
                if (value != "") {
                    this.UI.jqActivateBar.addClass(this.status.isActivateBarActivated);
                    VipUI.Button.reset(jqBtn)
                } else {
                    this.UI.jqActivateBar.removeClass(this.status.isActivateBarActivated);
                    VipUI.Button.disable(jqBtn)
                }
            },
            autoCancelState: -1,
            cancelAndReload: false
        };
        module.exports = CouponView
    }
    , {
        "../../../../../../libDeprecated/js/checkout/te/4/modules/ad/nsAdSense": 32,
        "../../../../../../libDeprecated/js/plugins/modules/OrderUtil/CallbackUtil": 39,
        "../../../../../../libDeprecated/js/plugins/modules/OrderUtil/ViewTools": 42,
        "../../../../../../libDeprecated/js/plugins/modules/Placeholder/Placeholder": 47,
        "../../../../../../libDeprecated/js/plugins/modules/Pop/CommonPop": 48,
        "../../../../../../libDeprecated/js/plugins/modules/template": 58,
        "../../../../../../libDeprecated/js/plugins/modules/ui": 60
    }],
    13: [function(require, module, exports) {
        arguments[4][7][0].apply(exports, arguments)
    }
    , {
        "./model": 14,
        "./view": 15
    }],
    14: [function(require, module, exports) {
        var cartServ = require("../../../../../../../../../api/serv/cart/cartList");
        var imgHost = require("../../../../../../../libDeprecated/js/plugins/modules/img/addHost");
        var CartModel = {
            data: {
                commErrCode: "500",
                commErrMsg: "\u7cfb\u7edf\u7e41\u5fd9\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5~",
                size_and_product_ids: "",
                supplierId_sizeIds: {},
                sizeIds: "",
                checkedSize: "",
                unavailableSize: "",
                isUsedCoupon: 0,
                couponSns: "",
                exclusivePriceInfo: "",
                cartOrderList: {},
                isAllUnAvailable: true,
                cartData: {},
                giftHostProduct: {},
                additionFunction: ""
            },
            events: {
                pub: {
                    cartGetCartSuccess: "cart.getCart.success",
                    cartGetAdditionalSuccess: "cart.getAdditional.success",
                    cartGetAdditionalFail: "cart.getAdditional.fail",
                    exclusivePriceData: "get.exclusivePriceData",
                    couponAskCancel: "coupon.askCancel",
                    pmsChange: "pms.change",
                    submitCartFail: "submit.cart.fail",
                    cartSelect: "cart.select",
                    cartChanged: "cart.changed",
                    checkSupplierSuccess: "cart.check.supplier.success",
                    checkSupplierFail: "cart.check.supplier.fail",
                    modifyNumSuccess: "act.change.success",
                    modifyNumFail: "act.change.fail",
                    deleteItemSuccess: "delete.item.success",
                    deleteItemFail: "delete.item.fail",
                    markupPurchaseDelete: "special.operate.ajax",
                    cartReload: "cart.reload",
                    callMarSeed: "call.mar.seed"
                },
                sub: {
                    cartGetCart: "cart.getCart",
                    cartSubmit: "cart.submit",
                    selectExclusivePriceSuccess: "select.exclusivePriceSuccess",
                    changeCouponId: "change.coupon",
                    getCxoTitle: "cxoPrice.getTitle",
                    cartTimeout: "cart.timeout",
                    cartReload: "cart.reload",
                    submitCart: "submit.cart",
                    getDataSuccess: "sidebar.cart.getData.success",
                    couponUseSuccess: "coupon.model.useSuccess",
                    couponActivateSuccess: "coupon.model.activateSuccess",
                    couponCancelSuccess: "coupon.model.cancelSuccess",
                    checkSupplier: "cart.check.supplier",
                    modifyNum: "cart.modify.num",
                    deleteItem: "delete.item",
                    newCartPrepay: "new.cart.prepay"
                }
            },
            init: function(initData) {
                var that = this;
                that.prepayCart();
                that.bindListeners()
            },
            bindListeners: function() {
                var that = this;
                $.Listeners.sub(that.events.sub.checkSupplier).onsuccess(function(data) {
                    that.checkSupplier(data)
                });
                $.Listeners.sub(that.events.sub.modifyNum).onsuccess(function(data) {
                    that.modifyNum(data)
                });
                $.Listeners.sub(that.events.sub.deleteItem).onsuccess(function(data) {
                    that.deleteItem(data)
                });
                $.Listeners.sub(that.events.sub.submitCart).onsuccess(function() {
                    that.onSubmit(true)
                });
                $.Listeners.sub(that.events.sub.changeCouponId).onsuccess(function(data) {
                    $.Listeners.pub(that.events.pub.cartChanged).success({
                        action: "changeCoupon",
                        render: true,
                        couponSns: data.couponSns
                    })
                });
                $.Listeners.sub(that.events.sub.newCartPrepay).onsuccess(function(data) {
                    if (data && data.additionFunction)
                        that.data.additionFunction += data.additionFunction;
                    that.getCartV2()
                });
                $.Listeners.sub(that.events.sub.cartGetCart).onsuccess(function(data) {
                    that.getCartV2(data)
                })
            },
            getCartV2: function(data) {
                var that = this
                  , opt = {};
                if (data && data.action == "changeCoupon") {
                    opt.coupon = data.couponSns || "";
                    opt.isReco = "0"
                }
                if (that.data.additionFunction != "")
                    opt.additionFunction = that.data.additionFunction;
                $.when(cartServ.getCart(opt)).then(function(cartData) {
                    that.getCartDataSuccess({
                        cartOrderList: cartData.cartOrderList,
                        cartInfo: cartData.cartInfo
                    })
                }, that.getCartDataFail)
            },
            onSubmit: function(checkTimeOut) {
                var that = this;
                var loginID = $.Cookie.get("VipLID");
                if (!loginID && $.Var.get("LoginInLogic")) {
                    VIPSHOP.login.init({
                        loginEvent: function() {
                            location.reload()
                        }
                    });
                    $.Listeners.pub(that.events.pub.submitCartFail).success()
                } else
                    location.href = VIPSHOP.checkoutHost + "/?size_id=" + encodeURIComponent(this.data.checkedSize) + "&coupon_sn=" + encodeURIComponent(this.getCartCouponSns()) + "&size_active=" + encodeURIComponent(this.data.exclusivePriceInfo) + "&can_checked=1&cart_ver=4"
            },
            getCartCouponSns: function() {
                var i, j, couponSnList = [];
                for (i in this.data.cartOrderList) {
                    selectedCouponList = this.data.cartOrderList[i] && this.data.cartOrderList[i].selectedCouponList || [];
                    for (j in selectedCouponList) {
                        couponSn = selectedCouponList[j].couponSn;
                        if (couponSn)
                            couponSnList.push(couponSn)
                    }
                }
                return couponSnList.join(",")
            },
            getCartDataSuccess: function(data) {
                var that = this;
                that.data.cartOrderList = that.dataProcess(data && data.cartOrderList);
                $.Var.set("cartSkuCountLimit", data.cartInfo.count.skuCountLimit);
                $.Listeners.pub(that.events.pub.cartGetCartSuccess).success({
                    cartOrderList: that.data.cartOrderList,
                    cartInfo: data.cartInfo,
                    sizeIds: that.data.sizeIds,
                    supplierId_sizeIds: that.data.supplierId_sizeIds,
                    checkedSize: that.data.checkedSize,
                    unavailableSize: that.data.unavailableSize,
                    isAllUnAvailable: that.data.isAllUnAvailable
                });
                $.Cookie.set("VipCI_te", data.cartInfo.count.productCount + "|" + data.cartInfo.time.remainingTime + "|" + "cartChanged", ".vip.com", "/");
                $.when(cartServ.getCartAdditionalInfo(that.data.size_and_product_ids)).then(function(data) {
                    $.Listeners.pub(that.events.pub.cartGetAdditionalSuccess).success({
                        sizeIdProductInfoMap: data.sizeIdProductInfoMap
                    })
                }, "")
            },
            getCartDataFail: function() {
                location.href = VIPSHOP.cartHost + "?error=3&cart_ver=4"
            },
            dataProcess: function(cartOrderList) {
                var that = this, tmpExposureMarsData = [], tmpClickMarsData = [], productGroupList, groupActive, splitOrderFreightInfo, selectedCouponList, productList, item, orderActive, supplierId, sizeProductId = [], checkedSize = [], unavailableSize = [], sizeIds = [];
                for (var i = 0; i < cartOrderList.length; i++) {
                    productGroupList = cartOrderList[i].productGroupList;
                    var supplierId_sizeIds = [];
                    for (var m = 0; m < productGroupList.length; m++) {
                        groupActive = productGroupList[m].groupActiveInfo;
                        if (groupActive != null) {
                            groupActive.isShowCd = true;
                            if (groupActive.isLink) {
                                groupActive.sUrl = "//list.vip.com/active.html?postfreeType=pms_active&addonPrice=" + groupActive.needMoreMoney + "&activeNos=" + groupActive.activeNo;
                                tmpClickMarsData.push("", "", groupActive.activeNo, "X-3", 1, "");
                                groupActive.dataMars = tmpClickMarsData.join("|");
                                tmpExposureMarsData.push("pc", "recommend", -99, 1, -99, 110, "");
                                groupActive.exposureMarsData = tmpExposureMarsData.join("|")
                            }
                        }
                        productList = productGroupList[m].productList;
                        for (var j = 0; j < productList.length; j++) {
                            item = productList[j];
                            item.goodslink = VIPSHOP.detailHost + "/detail-" + item.brandId + "-" + item.productId + ".html";
                            sizeProductId.push(item.sizeId + ":" + item.productId);
                            sizeIds.push(item.sizeId);
                            supplierId_sizeIds.push(item.sizeId);
                            item.squareImage = imgHost(item.squareImage);
                            if (item.available == "1")
                                that.data.isAllUnAvailable = false;
                            if (item.isSelected)
                                checkedSize.push(item.sizeId);
                            if (item.giftHostProduct == 1)
                                that.data.giftHostProduct[item.sizeId] = 1;
                            item.vipshopPrice = parseFloat(item.vipshopPrice).toFixed(2);
                            item.priceExcludePms = item.priceExcludePms ? parseFloat(item.priceExcludePms).toFixed(2) : "";
                            if (item.unavailable == 4)
                                item.tag = "e-goods-mcarousel-soldout-tag";
                            else if (item.unavailable == 1)
                                item.tag = "e-goods-mcarousel-takeoff-tag";
                            if (cartOrderList[i].deleteInvalidSkuFlag == 1)
                                unavailableSize.push(item.sizeId)
                        }
                        that.data.size_and_product_ids = sizeProductId.join(",");
                        that.data.sizeIds = sizeIds.join(",");
                        that.data.checkedSize = checkedSize.join(",");
                        that.data.unavailableSize = unavailableSize.join(",")
                    }
                    splitOrderFreightInfo = cartOrderList[i].splitOrderFreightInfo;
                    if (splitOrderFreightInfo && (splitOrderFreightInfo.addOnItemType && splitOrderFreightInfo.needToBuyMoreMoney))
                        splitOrderFreightInfo.link = "//list.vip.com/active.html?postfreeType=" + splitOrderFreightInfo.addOnItemType + "&addonPrice=" + splitOrderFreightInfo.needToBuyMoreMoney;
                    selectedCouponList = cartOrderList[i].selectedCouponList;
                    if (selectedCouponList && selectedCouponList.length > 0)
                        that.data.isUsedCoupon = 1;
                    supplierId = cartOrderList[i].supplierInfo.supplierId;
                    that.data.supplierId_sizeIds[supplierId] = supplierId_sizeIds.join(",")
                }
                return cartOrderList
            },
            checkSupplier: function(data) {
                var that = this;
                $.when(cartServ.getSelectGoods(data)).then(function(data, msg) {
                    that.checkSupplierSuccess(data, msg)
                }, that.checkSupplierFail)
            },
            checkSupplierSuccess: function(data, msg) {
                var that = this;
                if (data)
                    $.Listeners.pub(CartModel.events.pub.checkSupplierSuccess).success(data);
                else
                    $.Listeners.pub(CartModel.events.pub.checkSupplierFail).success({
                        msg: msg
                    })
            },
            checkSupplierFail: function() {
                $.Listeners.pub(CartModel.events.pub.checkSupplierFail).success({
                    code: CartModel.data.commErrCode,
                    msg: CartModel.data.commErrMsg
                })
            },
            deleteItem: function(data) {
                var that = this
                  , sizeId = data.size_id;
                if (!data.allDel && !data.confirm)
                    if (that.data.giftHostProduct[sizeId])
                        $.Listeners.pub(that.events.pub.deleteItemFail).success({
                            size_id: sizeId,
                            code: "CONFIRM",
                            del_mars: "cart_delx_gift_btn",
                            cancel_mars: "cart_delx_gift_cancel_btn",
                            pop_mars: "cart_delx_gift_pop",
                            msg: "\u5220\u9664\u8be5\u5546\u54c1\u540e\uff0c\u8d60\u54c1\u53ef\u80fd\u4f1a\u4e00\u8d77\u88ab\u5220\u9664\uff0c\u786e\u8ba4\u8981\u5220\u9664\u5417\uff1f"
                        });
                    else
                        $.Listeners.pub(that.events.pub.deleteItemFail).success({
                            size_id: sizeId,
                            code: "CONFIRM",
                            del_mars: "cart_delok_btn",
                            cancel_mars: "cart_delx_btn",
                            pop_mars: "cart_del_pop",
                            msg: "\u5220\u6389\u7684\u5546\u54c1\u5c06\u53ef\u80fd\u88ab\u522b\u4eba\u62a2\u8d70\u54e6~\u8981\u5220\u9664\u5417\uff1f"
                        });
                else {
                    if (that.data.isUsedCoupon)
                        $.Listeners.pub(that.events.pub.couponAskCancel).success();
                    $.when(cartServ.getCartDelete(sizeId)).then(function(deldata, msg) {
                        that.getCartDeleteSuccess({
                            data: deldata && deldata.deleteResult ? deldata.deleteResult : "",
                            msg: msg,
                            allDel: data.allDel ? data.allDel : ""
                        })
                    }, that.getCartDeleteFail)
                }
            },
            getCartDeleteSuccess: function(data) {
                var that = this;
                var delData = data.data ? data.data : ""
                  , size_id = [];
                if (delData && !$.isEmptyObject(delData)) {
                    for (var i = 0; i < delData.length; i++)
                        if (delData[i].flag)
                            size_id.push(delData[i].sizeId);
                    if (size_id) {
                        $.Listeners.pub(that.events.pub.deleteItemSuccess).success({
                            size_id: size_id
                        });
                        $.Listeners.pub(that.events.pub.cartChanged).success({
                            action: "delete",
                            render: true
                        })
                    } else
                        $.Listeners.pub(that.events.pub.deleteItemFail).success({
                            allDel: data.allDel ? data.allDel : "",
                            code: CartModel.data.commErrCode,
                            msg: "\u5220\u9664\u8d2d\u7269\u8f66\u5546\u54c1\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5"
                        })
                } else
                    $.Listeners.pub(that.events.pub.deleteItemFail).success({
                        allDel: data.allDel ? data.allDel : "",
                        code: CartModel.data.commErrCode,
                        msg: data.msg ? data.msg : "\u5220\u9664\u8d2d\u7269\u8f66\u5546\u54c1\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5"
                    })
            },
            getCartDeleteFail: function() {
                $.Listeners.pub(CartModel.events.pub.deleteItemFail).success({
                    code: CartModel.data.commErrCode,
                    msg: CartModel.data.commErrMsg
                })
            },
            modifyNum: function(data) {
                var that = this
                  , isSucceed = false;
                var ajaxParam = {
                    size_id: data.size_id,
                    num: data.num,
                    type: data.type
                };
                if (data.type == "subtract" && that.data.giftHostProduct[ajaxParam.size_id])
                    $.Listeners.pub(that.events.pub.modifyNumFail).success({
                        size_id: ajaxParam.size_id,
                        code: "SUBTRACT",
                        msg: "\u8c03\u6574\u5546\u54c1\u6570\u91cf\u540e\uff0c\u5bf9\u5e94\u8d60\u54c1\u4e5f\u53ef\u80fd\u4f1a\u88ab\u5220\u9664\uff0c\u786e\u8ba4\u8c03\u6574\u5417\uff1f"
                    });
                else {
                    if (that.data.isUsedCoupon)
                        $.Listeners.pub(that.events.pub.couponAskCancel).success();
                    $.when(cartServ.getCartEdit(ajaxParam)).then(function(modifyData, msg) {
                        that.getCartModifySuccess({
                            data: modifyData,
                            msg: msg,
                            ajaxParam: ajaxParam
                        })
                    }, that.getCartModifyFail)
                }
            },
            getCartModifySuccess: function(data) {
                var that = this;
                if (data.data == 1) {
                    $.Listeners.pub(that.events.pub.modifyNumSuccess).success({
                        size_id: data.ajaxParam.size_id,
                        data: data
                    });
                    $.Listeners.pub(that.events.pub.cartChanged).success({
                        action: "modify",
                        render: true
                    })
                } else if (data.data == 14E3 && data.ajaxParam.type == "subtract")
                    $.Listeners.pub("act.change.fail").success({
                        size_id: data.ajaxParam.size_id,
                        code: data.data,
                        msg: "\u65e0\u6cd5\u51cf\u5c11\u4e86\uff0c\u5f53\u524d\u5546\u54c1\u5df2\u8fbe\u6700\u4f4e\u8d77\u552e\u4ef6\u6570"
                    });
                else
                    $.Listeners.pub("act.change.fail").success({
                        size_id: data.ajaxParam.size_id,
                        code: CartModel.data.commErrCode,
                        msg: data.msg ? data.msg : CartModel.data.commErrMsg
                    })
            },
            getCartModifyFail: function() {
                $.Listeners.pub("act.change.fail").success({
                    code: CartModel.data.commErrCode,
                    msg: CartModel.data.commErrMsg
                })
            },
            cutterString: function(txt, length) {
                if (txt.length > length)
                    return txt.substr(0, length - 1) + "...";
                else
                    return txt
            },
            prepayCart: function() {
                var that = this;
                cartServ.prepayCart()
            }
        };
        module.exports = CartModel
    }
    , {
        "../../../../../../../../../api/serv/cart/cartList": 5,
        "../../../../../../../libDeprecated/js/plugins/modules/img/addHost": 57
    }],
    15: [function(require, module, exports) {
        var orderListTpl = '<script type="text/html" id="J_orders_template">\n    <div class="m-orders new_cart_wrap J_order">\n        <div class="orders-hd">\n            <ul class="m-inline-block">\n                <li class="inline-block-item product-item">\n                        <span class="text product">\u5546\u54c1</span>\n                </li>\n                \n                <li class="inline-block-item price-item">\n                    <span class="text">\u5355\u4ef7</span>\n                </li>\n                <li class="inline-block-item quantity-item">\n                    <span class="text">\u6570\u91cf</span>\n                </li>\n                <li class="inline-block-item actions-item">\n                    <span class="text">\u64cd\u4f5c</span>\n                </li>\n            </ul>\n        </div>\n        {{each cartList.cartOrderList as supplier i}}\n        <div class="\n        {{if supplier.supplierInfo.groupType  == \'0\'}}\n            orders-vip\n        {{else if supplier.supplierInfo.groupType == \'1\'}}\n            orders-store\n        {{else if supplier.supplierInfo.groupType == \'2\'}}\n            orders-oversea\n        {{else if supplier.supplierInfo.groupType == \'-1\'}}\n            orders-unavailable\n        {{/if}}\n        " id="J_supplier_{{supplier.supplierInfo.supplierId}}" data-supplier_id="{{supplier.supplierInfo.supplierId}}">\n            <div class="product-item-title"\n                title="{{supplier.supplierInfo.title}}">\n                {{supplier.supplierInfo.title}}\n                {{if supplier.deleteInvalidSkuFlag && supplier.deleteInvalidSkuFlag == 1}}\n                    <div class="product-item-delete J_cart_all_del_box">\n                        <a class="c-order-button-del  J_fake_a  J_cart_delLink"\n                                mars_sead="cart_del_btn" role="button"\n                                href="###">\u6e05\u7a7a</a>\n                        <div class="ui-tooltips ui-tooltips-handle ui-tooltips-top-arrow order-del-confirm-tooltips J_cart_item_confirm_box is-order-del-confirm-tooltips-initialize-success">\n                        <div class="ui-tooltips-arrow">\n                            <span class="arrow arrow-out">&#9670;</span>\n                            <span class="arrow">&#9670;</span>\n                        </div>\n                        <div class="ui-tooltips-content">\n                            <p class="tooltips-text">\u786e\u5b9a\u6e05\u7a7a\u6682\u65e0\u5e93\u5b58\u5546\u54c1\u5417\uff1f</p>\n                            <div class="ui-tooltips-command">\n                                <a href="###" role="button" class="ui-btn-mini ui-btn-primary J_fake_a J_cart_del_all_cancel"\n                                   mars_sead="cart_delok_btn">\u53d6\u6d88</a>\x3c!--\n                             --\x3e<a href="###" role="button" class="ui-btn-mini ui-btn-default J_fake_a J_cart_del_all_confirm"\n                                   mars_sead="cart_delx_btn">\u786e\u5b9a</a>\n                            </div>\n                        </div>\n                    </div>\n                    </div>\n\n                {{/if}}\n            </div>\n            {{each supplier.productGroupList as group j}}\n            <div class="orders-bd \n            {{if group.groupActiveInfo && group.groupActiveInfo.activeTips && group.groupActiveInfo.activeTips == \'\u4e70\u8d60\'}}\n                orders-gift\n            {{/if}}">\n                <div class="m-table-box J_goodsGroup  \n                    {{if group.groupActiveInfo != null && group.groupActiveInfo.activeType != 1}}\n                        {{if group.groupActiveInfo.isActive}}\n                            promotion-on-box\n                        {{else}}\n                            promotion-off-box\n                        {{/if}}\n                    {{/if}}\n                    " data-active-no="{{group.groupActiveInfo ? group.groupActiveInfo.activeNo : \'\'}}">\n                    <div class="table-box-inner">\n                        {{if group.groupActiveInfo}}\n                            \x3c!-- \u6d3b\u52a8\u4f18\u60e0 --\x3e\n                            <div class="table-box-tips J_group_active_sec">\n                                <div class="m-label">\n                                    <span class="u-label label-info">{{group.groupActiveInfo.activeTips}}</span>\n                                    \n                                    <span class="label-text">\n                                        <span class="J_activeMsg_{{group.groupActiveInfo.activeNo}}">{{#group.groupActiveInfo.activeMsg}}</span>\n                                        {{if group.groupActiveInfo.isLink}}\n                                            <a href="{{group.groupActiveInfo.sUrl}}" class="more" rel="external" target="_blank" mars_exposure_sead="active_te_resource_expose" mars_exposure_module="{{exposureMarsData}}" mars_sead="active_te_resource_click" data_mars="{{dataMars}}">\u53bb\u51d1\u5355<span class="u-open-arrow  c-open-arrow-right">&gt;</span></a>\n                                        {{/if}}\n                                    </span>\n                                    {{if group.groupActiveInfo.remainTime}}<span class="remainTime">[{{group.groupActiveInfo.remainTime}}]</span>{{/if}}\n                            </div>\n                            </div>\n                        {{/if}}                        \n                        {{each group.productList as item k}}\n                        \x3c!-- \u5730\u533a --\x3e\n                        {{if item.available == 2 && !item.tag}}                        \n                        <tr>\n                            <td colspan="5" class="order-product-available-td">\n                                <div class="order-product-available-tips">\n                                    <p class="product-available-txt">\u7531\u4e8e\u4f60\u5207\u6362\u4e86\u6536\u8d27\u5730\u533a\uff0c\u4ee5\u4e0b\u5546\u54c1\u72b6\u6001\u5df2\u53d1\u751f\u53d8\u5316</p>\x3c!--\n                                    --\x3e<div class="c-tooltips-trigger  c-product-available-tooltips-trigger  J_shopping_guide_tooltips" data-toggle="tooltip">\n                                        <span class="tooltips-trigger-icon  vipFont">&#xe62f;</span>\n                                        <div class="ui-tooltips ui-tooltips-top-arrow">\n                                            <div class="ui-tooltips-arrow">\n                                                <span class="arrow arrow-out">&#9670;</span>\n                                                <span class="arrow">&#9670;</span>\n                                            </div>\n                                            <div class="ui-tooltips-content">\n                                                <p>\u7531\u4e8e\u5730\u533a\u5207\u6362\u800c\u5bfc\u81f4\u7684\u5546\u54c1\u65e0\u8d27\uff0c\u6211\u4eec\u4f9d\u7136\u4f1a\u4e3a\u4f60\u5728\u539f\u914d\u9001\u533a\u57df\u4fdd\u7559\u5e93\u5b58\u3002</p><p>\u4f60\u53ea\u9700\u8981\u5728\u9996\u9875/\u7ed3\u7b97\u9875\u91cd\u65b0\u9009\u62e9\u539f\u914d\u9001\u5730\u5740\uff0c\u65e0\u8d27\u5546\u54c1\u5c06\u4e56\u4e56\u56de\u5230\u8d2d\u7269\u888b\uff0c\u76f8\u5173\u4f18\u60e0\u4ea6\u53ef\u91cd\u65b0\u4eab\u53d7\u3002</p>\n                                            </div>\n                                        </div>\n                                    \n                                    </div>\n                                </div>\n                            </td>\n                        </tr>\n                        {{/if}}\n                        {{if item.itemType != 2}}\n                            <table class="table orders-table \n                            {{if item.available == 2 && !item.tag}}\n                                is-table-box-dividing-line\n                            {{/if}}">\n                                <tbody>\n                                \x3c!-- \u975e\u8d60\u54c1 --\x3e\n                                    <tr class="J_goods_item\n                                        {{if item.available == 2}}\n                                            z-orders-unpurchasable\n                                        {{/if}}\n                                        " id="J_item_{{item.productId}}_{{item.sizeId}}"\n                                        data-supplier_id="{{supplier.supplierInfo.supplierId}}"\n                                        data-group_index="{{j}}"\n                                        data-product_id="{{item.productId}}"\n                                        data-size_id="{{item.sizeId}}">\n                                        <td class="product-item">\n                                            <div class="m-product  product-small">\n                                                <div class="u-checkbox J_checkbox J_checkbox_{{supplier.supplierInfo.supplierId}}\n                                                    {{if item.isSelected}}\n                                                        z-checkbox-checked\n                                                    {{/if}}\n                                                    {{if item.available == 2}}\n                                                        z-checkbox-disabled\n                                                    {{/if}}\n                                                    {{if item.isSupportChecked != 1}}hidden{{/if}}" data-checkbox = "item" data-size_id="{{item.sizeId}}">\n                                                <input name="supplier_id"\n                                                        type="checkbox"\n                                                        value="{{item.productId}}"\n                                                        {{if item.isSelected}}\n                                                            checked="checked"\n                                                        {{/if}}\n                                                    class="J_supplier"\n                                                    id="J_orders_checkbox_{{item.productId}}_{{item.sizeId}}">\n                                                <label for="J_orders_checkbox_{{item.productId}}_{{item.sizeId}}" class="simulate"></label>\n                                            </div>\n                                                <div class="product-pic product-pic-trigger J_tooltips_trigger">\n                                                    <a rel="external" href="{{item.goodslink}}" target="_blank}" >\n                                                        <img width="74" height="74" alt="{{item.name}}" src="{{item.squareImage}}">\n                                                        \n                                                        {{if item.tag}}\n                                                        <div class="c-goods-carousel-mapiTag {{item.tag}}"></div>\n                                                        {{else if item.available == 2}}\n                                                            <div class="orders-img-tips">\n                                                                <i>\u65e0\u8d27</i>\n                                                            </div>\n                                                        {{/if}}\n                                                    </a>\n                                                    \x3c!-- hover\u5c55\u793a\u5927\u56fe --\x3e\n                                                    <div class="ui-tooltips ui-tooltips-left-top-arrow product-pic-preview-tooltips">\n                                                        <div class="ui-tooltips-arrow">\n                                                            <span class="arrow arrow-out">&#9670;</span>\n                                                            <span class="arrow">&#9670;</span>\n                                                        </div>\n                                                        <div class="ui-tooltips-content">\n                                                            <img class="lazy" src="//shop.vipstatic.com/img/share/blank.png" data-original="{{item.squareImage}}" alt="{{item.name}}" width="184" height="184">\n                                                        </div>\n                                                    </div>\n                                                    \x3c!-- \u8c03\u9644\u52a0\u4fe1\u606f\u7684\u63a5\u53e3 --\x3e\n                                                    <div class="product-stock">\u5373\u5c06\u552e\u7f44</div>\n                                                </div>\n                                                <div class="product-info">\n                                                    <h3 class="product-title">\n                                                        {{if item.isFreeGift == 1}}\n                                                            <span title="{{item.name}}">{{item.name | cutter:32}}</span>\n                                                        {{else}}\n                                                            <a rel="external, noopener" href="{{item.goodslink}}" title="{{item.name}}"\n                                                               target="_blank" >{{item.name | cutter:32}}</a>\n                                                        {{/if}}\n                                                    </h3>\n                                                    {{if item.sizeName}}\n                                                        <p class="product-size">\u5c3a\u7801\uff1a{{item.sizeName}}</p>\n                                                    {{/if}}\n                                                    {{if item.extTipsList && item.extTipsList.length > 0}}\n                                                        <div class="product-price-tip">\n                                                            {{each item.extTipsList as extTips}}\n                                                            <span class="{{if extTips.type == \'11\'}}product-vip{{else if extTips.type == \'12\'}}product-aftersale{{else}}hidden{{/if}}">{{extTips.text}}</span>                       \n                                                            {{/each}}                                \n                                                        </div>\n                                                    {{/if}}\n                                                </div>\n                                            </div>\n                                        </td>\n                                        <td class="price-item">\n                                            \x3c!-- \u4f18\u60e0\u4e0b\u62c9\u6d6e\u5c42\uff0ctodo --\x3e\n                                            \x3c!-- {{if item.specialPriceActivities}}\n                                            {{each specialPriceActivities}}\n                                            <div class="c-grade-price-container">\n                                                <?php\n                                                /**\n                                                 * @states\n                                                 * 01. `.is-grade-price-expanded` \u663e\u793a\u51fa\u4e13\u4eab\u4ef7\u5217\u8868\n                                                 * 02. `.is-grade-price-mask` \u663e\u793a\u51fa\u906e\u7f69\n                                                 * 03. `.is-grade-price-error` \u663e\u793a\u51fa\u64cd\u4f5c\u5931\u8d25\n                                                 * 04. `.is-grade-price-loading` \u663e\u793a\u51fa\u64cd\u4f5c\u52a0\u8f7d\u4e2d\n                                                 * 05. `.is-grade-price-old` \u65e7\u7248\n                                                 */\n                                                ?>\n                                                <div class="c-grade-price is-grade-price-old J_grade_price_wrap" mars_sead="cart_price_xl_btn" id="J_grade_price_wrap{{item.size_id}}">\n                                                    <div class="c-grade-price-header J_grade_price_header">\n                                                        <div class="c-grade-price-title" title="{{item.user_grade}}">{{item.user_grade}}</div>\n                                                        <div class="c-grade-price-icon">\n                                                            <span class="vipFont  c-grade-price-glyphicon  c-grade-price-glyphicon-up">&#xe615;</span>\n                                                            <span class="vipFont  c-grade-price-glyphicon  c-grade-price-glyphicon-down">&#xe616;</span>\n                                                        </div>\n                                                    </div>                                \n                                                </div>\n                                            </div>\n                                            {{/each}}\n                                            {{/if}} --\x3e\n\n                                            <div class="m-price">\n                                                {{if item.priceTitle}}<span class="priceTitle">{{item.priceTitle}}</span>{{/if}}<span class="u-yen">&yen;</span><strong class="u-price">{{item.priceExcludePms ? item.priceExcludePms : item.vipshopPrice}}</strong>\n                                            </div>\n                                            {{if item.priceTitle && item.priceExcludePms && item.priceExcludePms != item.vipshopPrice}}\n                                            <del class="market-price">\n                                                <span class="u-yen">&yen;</span><span class="u-price">{{item.vipshopPrice}}</span>\n                                            </del>\n                                            {{/if}}\n                                        </td>\n                                        <td class="quantity-item">\n                                            \x3c!-- \u6570\u91cf\u7ec4\u4ef6 --\x3e\n                                            <div class="m-amount J_confirm_box J_cart_amount_confirm_box">\n                                                {{if item.available == 2}}\n                                                    <a class="amount-trigger amount-trigger-minus z-amount-trigger-disabled J_fake_a "  href="###">\n                                                        <span class="line-horizontal"></span>\n                                                        <span class="amount-trigger-loading"></span>\n                                                    </a>\n                                                    <div title="" class="amount-num">\n                                                        <input name="num" type="text" value="{{item.currentBuyCount}}"\n                                                               class="J_cart_num" readonly="readonly" maxlength="2">\n                                                    </div>\n                                                    <a class="amount-trigger amount-trigger-plus z-amount-trigger-disabled J_fake_a" href="###">\n                                                        <span class="line-horizontal"></span>\n                                                        <span class="line-verticality"></span>\n                                                        <span class="amount-trigger-loading"></span>\n                                                    </a>\n                                                {{else}}\n                                                    <a mars_sead="cart_num_sel" class="amount-trigger amount-trigger-minus J_cart_numSubtract J_fake_a\n                                                    {{if item.buyCountMin==item.currentBuyCount }}\n                                                    z-amount-trigger-disabled\n                                                    {{/if}}" href="###">\n                                                        <span class="line-horizontal"></span>\n                                                        <span class="amount-trigger-loading"></span>\n                                                    </a>\n                                                    <div title="\u8bf7\u9009\u62e9\u8d2d\u4e70\u6570\u91cf" class="amount-num">\n                                                        <input name="num" type="text" value="{{item.currentBuyCount}}"\n                                                               class="J_cart_num"\n                                                               data-min="{{item.buyCountMin}}"\n                                                               data-max="{{item.buyCountMax}}"\n                                                               data-id="{{item.productId}}"\n                                                               data-size_id="{{item.sizeId}}"\n                                                               data-brand-id="{{item.brandId}}"\n                                                               data-supplier-id="{{supplier.supplierInfo.supplierId}}"\n                                                               readonly="readonly">\n                                                    </div>\n                                                    <a mars_sead="cart_num_sel" class="amount-trigger amount-trigger-plus J_cart_numAdd J_fake_a\n                                                    {{if item.buyCountMax==item.currentBuyCount}}\n                                                    z-amount-trigger-disabled\n                                                    {{/if}}\n                                                    " href="###" >\n                                                        <span class="line-horizontal"></span>\n                                                        <span class="line-verticality"></span>\n                                                        <span class="amount-trigger-loading"></span>\n                                                    </a>\n                                                    \x3c!-- \u6570\u91cf\u4e8c\u6b21\u786e\u8ba4\u4fee\u6539\u6d6e\u5c42 --\x3e\n                                                    <div class="ui-tooltips ui-tooltips-handle ui-tooltips-top-arrow amount-tooltips J_cart_item_confirm_tips">\n                                                        <div class="ui-tooltips-arrow">\n                                                            <span class="arrow arrow-out">&#9670;</span>\n                                                            <span class="arrow">&#9670;</span>\n                                                        </div>\n                                                        <div class="ui-tooltips-content">\n                                                            <p class="J_coupon_info">-</p>\n                                                            <div class="ui-tooltips-command">\n                                                                <a href="###" role="button" class="ui-btn-mini ui-btn-primary J_fake_a J_cart_tips_modify_confirm">\u786e\u5b9a</a><a href="###" role="button" class="ui-btn-mini ui-btn-default J_fake_a J_cart_tips_modify_cancel">\u53d6\u6d88</a>\n                                                            </div>\n                                                        </div>\n                                                    </div>\n                                                    \x3c!-- \u6570\u91cf\u4fee\u6539\u6210\u529f\u63d0\u793a\u5c42 --\x3e\n                                                    <div class="ui-tooltips ui-tooltips-bottom-arrow amount-error-tooltips J_amount_error_tooltips">\n                                                        <div class="ui-tooltips-arrow">\n                                                            <span class="arrow arrow-out">&#9670;</span>\n                                                            <span class="arrow">&#9670;</span>\n                                                        </div>\n                                                        <div class="ui-tooltips-content">\n                                                            <p class="ui-tooltips-msg">\n                                                                <span class="vipFont if-sigh">&#xe620;</span><span class="J_tip_txt">-</span>\n                                                            </p>\n                                                        </div>\n                                                    </div>\n                                                {{/if}}\n                                            </div>\n                                        </td>\n                                        <td class="actions-item">\n                                            <div class="m-order-del J_confirm_box J_cart_del_confirm_box">\n                                                <a class="c-order-button-del  J_fake_a  J_list_delLink"\n                                                    mars_sead="cart_del_btn" role="button"\n                                                    href="###">\u5220\u9664</a>\n                                                    \x3c!-- \u627e\u76f8\u4f3c --\x3e\n                                                    \x3c!-- is-trigger-similar-expanded` \u5c55\u5f00\u627e\u76f8\u4f3c\u6d6e\u5c42 --\x3e\n                                                    {{if group.available == 2}}\n                                                    <a class="J_show_similar c-trigger-similar  c-order-trigger-similar  J_fake_a"\n                                                       data-mid="{{item.merchandise_id}}" data-type="cartlist"\n                                                       mars_sead="cart_similar_btn" role="button"\n                                                       href="###">\u627e\u76f8\u4f3c<span class="vipFont  c-trigger-similar-arrow">&#xe616;</span></a>\n                                                    {{/if}}\n\n                                                 \x3c!-- \u786e\u8ba4\u5220\u9664\u8ba2\u5355 --\x3e\n                                                <div class="ui-tooltips ui-tooltips-handle ui-tooltips-top-arrow order-del-confirm-tooltips J_cart_item_confirm_tips is-order-del-confirm-tooltips-initialize-success">\n                                                    <div class="ui-tooltips-arrow">\n                                                        <span class="arrow arrow-out">&#9670;</span>\n                                                        <span class="arrow">&#9670;</span>\n                                                    </div>\n                                                    <div class="ui-tooltips-content">\n                                                        <p class="tooltips-text J_coupon_info">\u5220\u9664\u9700\u8981\u91cd\u65b0\u4f7f\u7528\u4f18\u60e0\u5238\u5e76\u91cd\u9009\u8d60\u54c1\u54e6~\u8981\u5220\u9664\u5417\uff1f</p>\n                                                        <div class="ui-tooltips-command">\n                                                            <a href="###" role="button" class="ui-btn-mini ui-btn-primary J_fake_a J_cart_tips_del_confirm"\n                                                               mars_sead="cart_delok_btn">\u5220\u9664</a>\x3c!--\n                                                         --\x3e<a href="###" role="button" class="ui-btn-mini ui-btn-default J_fake_a J_cart_tips_del_cancel"\n                                                               mars_sead="cart_delx_btn">\u5148\u7559\u7740</a>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </td>\n                                    </tr>\n                                    \x3c!-- \u5982\u679c\u662f\u9884\u70ed\u671f --\x3e\n                                    {{if item.normalProductActivities}}\n                                        <tr>\n                                            <td colspan="4" class="c-pre-hot-tips-wrap">\n                                                <span class="c-pre-hot-icon">\n                                                    \u9884\u70ed\n                                                </span>\n                                                <span class="c-pre-hot-txt">\n                                                    {{item.normalProductActivities}}\n                                                </span>\n                                                <div class="c-pre-hot-tooltips" data-toggle="tooltip">\n                                                    <div class="ui-tooltips  ui-tooltips-bottom-right-arrow  c-tooltips-txt">\n                                                        <div class="ui-tooltips-arrow">\n                                                            <span class="arrow arrow-out">\u25c6</span>\n                                                            <span class="arrow">\u25c6</span>\n                                                        </div>\n                                                        <div class="ui-tooltips-content ">\u6b64\u5546\u54c1\u5373\u5c06\u8fdb\u5165\u6d3b\u52a8\u9884\u70ed\u671f\uff0c\u671f\u95f4\u6682\u4e0d\u80fd\u8d2d\u4e70\uff0c\u6d3b\u52a8\u5f00\u5356\u540e\u53ef\u6b63\u5e38\u8d2d\u4e70\u3002</div>\n                                                    </div>\n                                                    <span class="vipFont if-query tooltips-trigger-icon ">\ue62f</span>\n                                                </div>\n                                            </td>\n                                        </tr>\n                                    {{/if}}\n                                \n                            \n                                </tbody>\n                            </table>\n                        {{else}}\n                            <div class="c-gifts">\n                                <div class="c-gift">\n                                    <div class="c-gift-img">\n                                        <img class="c-gift-pic  lazy"\n                                            src="{{item.squareImage}}"\n                                            alt="{{item.name}}" width="32" height="42">\n                                        {{if item.available == 2}}\n                                        <div class="orders-img-tips">\n                                            <i>\u8d60\u5b8c</i>\n                                        </div>\n                                        {{/if}}\n                                    </div>\n                                    <div class="c-gift-title">{{item.name}}</div>\n                                    <div class="c-gift-info">\n                                        <span class="c-gift-size">\u5c3a\u7801\uff1a{{item.sizeName}}</span><span class="c-gift-quantity">\u6570\u91cf\uff1a{{item.currentBuyCount}}</span>\n                                    </div>\n                                </div>\n                            \n                        </div>\n                        {{/if}}\n                        {{/each}}\n                    </div>\n                </div>\n            </div>\n            <i class="orders-mask"></i>\n            {{/each}}\n            <div class="orders-ft  J_supplier_active_sec">\n                \x3c!-- \u90ae\u8d39  --\x3e\n                {{if supplier.splitOrderFreightInfo && supplier.splitOrderFreightInfo.showFreightMsg}}\n                <div class="m-label">\n                    <span class="u-label label-info">\u8fd0\u8d39</span>\n                    <div class="label-text">\n                        <div class="c-freight-tag">\n                            {{supplier.splitOrderFreightInfo.freightMsg}}\n                            \n                            \x3c!--\u514d\u90ae\u63d0\u793a--\x3e\n                            {{if supplier.splitOrderFreightInfo.freightStatement}}\n                            <div class="c-free-tooltips  " data-toggle="tooltip">\n                                <div class="ui-tooltips  ui-tooltips-bottom-right-arrow  c-carriage-tips " >\n                                    <div class="ui-tooltips-arrow">\n                                        <span class="arrow arrow-out">\u25c6</span>\n                                        <span class="arrow">\u25c6</span>\n                                    </div>\n                                    <div class="ui-tooltips-content J_free_tips_{{supplier.supplierInfo.supplierId}} ">{{supplier.splitOrderFreightInfo.freightStatement}}</div>\n                                </div>\n                                <span class="vipFont if-query tooltips-trigger-icon J_free_tips_icon_{{supplier.supplierInfo.supplierId}} J_free_tips_icon">\ue62f</span>\n                            </div>\n                            {{/if}} \n                            {{if supplier.splitOrderFreightInfo.linkType != "none" && supplier.splitOrderFreightInfo.addOnItemType}}\n                            <a class="more  J_needed_to_buy_more_link"\n                                href="{{supplier.splitOrderFreightInfo.link}}" target="_blank" rel="external"\n                                mars_sead="cart_qcd_link">\u53bb\u51d1\u5355<span class="u-open-arrow  c-open-arrow-right">&gt;</span></a>\n                            {{/if}}       \n                        </div>\n                    </div>\n                    \n                </div>\n                {{/if}}\n            </div>\n        </div>\n        {{/each}}\n    </div>\n    <div class="J_toast hidden">\n            <div class="m-cart-tip ui-tooltips J_tooltips">\n                \x3c!--z-ui-tooltips-in--\x3e\n                <div class="ui-tooltips-content i-content">\n                    <p class="ui-tooltips-msg"><span class="i-text J_text"></span></p>\n                </div>\n            </div>\n        </div>\n    </div>\n\x3c/script>\n\n\x3c!-- \u4e13\u4eab\u4ef7 --\x3e\n<script id="J_grade_price_template" type="text/html">\n    <div class="c-grade-price-body J_grade_price_body">\n        <div class="c-grade-price-content">\n            <div class="c-grade-price-scroll">\n                <ul class="c-grade-price-list">\n                    {{each exclusivePriceList as item k}}\n                    <li class="c-grade-price-item" mars_sead="{{if item.activeNo}}cart_price_activity_btn{{else}}cart_price_no_activity_btn{{/if}}">\n                        <span class="ui-radio  c-grade-price-radio">\n                            <input {{if item.isSelected}}checked="checked"{{/if}} type="radio" data-activeNo="{{item.activeNo}}" id="c-grade-price-{{item.sizeId}}{{k}}" name="c-grade-price{{sizeId}}"\n                                   class="ui-radio-normal J_grade_price_input J_grade_price_input{{item.sizeId}}{{item.activeNo}}">\x3c!--\n                         --\x3e<label for="c-grade-price-{{item.sizeId}}{{k}}" class="ui-radio-simulation"></label>\n                       </span>\x3c!--\n                    --\x3e<label for="c-grade-price-{{item.sizeId}}{{k}}" class="c-grade-price-text">{{item.activeName}}{{if item.specialPrice && item.activeNo}} \u4e13\u4eab\u4ef7{{item.specialPrice}}\u5143{{/if}}</label>\n                    </li>    \n                    {{/each}}            \n                </ul>\n            </div>\n        </div>\n        <div class="c-grade-price-actions">\n            <a href="###" role="button" mars_sead="cart_price_yes_btn"\n               class="ui-btn-mini  ui-btn-primary  c-grade-price-button  J_fake_a J_gradePriceConfirm_btn">\u786e\u5b9a</a>\x3c!--\n         --\x3e<a href="###" role="button" mars_sead="cart_price_no_btn"\n               class="ui-btn-mini  ui-btn-default  c-grade-price-button  J_fake_a J_gradePriceCancle_btn">\u53d6\u6d88</a>\n        </div>\n        <div class="c-grade-price-mask"></div>\n        <div class="c-grade-price-tooltips  c-grade-price-tooltips-error J_grade_price_error">\n            <p>\n                <span class="c-grade-price-error-glyphicon  vipFont  if-sigh">&#xe620;</span>\u9009\u62e9\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\n            </p>\n        </div>\n        <div class="c-grade-price-tooltips  c-grade-price-tooltips-loader J_grade_price_loading">\n            <p>\n                <img class="c-grade-price-loader-icon"\n                     src="//bootstrap.vipstatic.com/img/ui/ui-loading-pink-16x16.gif"\n                     width="16" height="16" alt="\u52a0\u8f7d\u4e2d\u2026">\u52a0\u8f7d\u4e2d\u2026\n            </p>\n        </div>\n    </div>\n\x3c/script>\n\n\n';
        var amountTotalTpl = '<script type="text/html" id="J_cart_amount">\n    <div class="orders-total-bd">\n        \x3c!-- \u5168\u90e8\u6ca1\u8d27\u65f6\u9690\u85cf --\x3e\n        <div class="c-price-panel J_price_panel">\n            <div class="c-price-panel-item">\n                <span class="m-price  c-price-panel-price">\n                    <span class="u-yen">&yen;</span>\x3c!--\n                 --\x3e<span class="u-price J_info_goodsTotal">{{amounts.goodsTotal}}</span>\n                </span>\n                \u5171<span class="c-price-panel-quantity  J_info_numTotal">{{count.checkedCount}}</span>\u4ef6\u5546\u54c1&nbsp;&nbsp;\u5546\u54c1\u91d1\u989d\n            </div>\n            \x3c!-- \u4f18\u60e0\u660e\u7ec6 --\x3e\n            {{if amountDetails}}\n                {{each amountDetails.itemList as item}}\n                    {{if item.type == "2"}}\n                    <div class="c-price-panel-item  J_info_activeTips">\n                        <span class="m-price  c-price-panel-price">\n                            -<span class="u-yen">&yen;</span>\x3c!--\n                         --\x3e<span class="u-price  J_info_activeTotal">{{item.amount}}</span>\n                        </span>\n                        {{item.title}}\n                    </div>\n                    {{/if}}\n                {{/each}}\n            {{else if amounts.savedMoney && amounts.savedMoney > 0}}\n                <div class="c-price-panel-item  J_info_couponFavTips">\n                    <span class="m-price  c-price-panel-price">\n                        -<span class="u-yen">&yen;</span>\x3c!--\n                     --\x3e<span class="u-price">{{amounts.savedMoney}}</span>\n                    </span>\n                    \u5df2\u4f18\u60e0\n                </div>\n            {{/if}}\n            <div class="c-price-panel-item  c-price-panel-item-total">\n                <span class="m-price  c-price-panel-price">\n                    <span class="u-yen">&yen;</span>\x3c!--\n                 --\x3e<span class="u-price J_info_total">{{amounts.payTotal}}</span>\n                </span>\n                \u603b\u91d1\u989d\uff08<span class="J_pms_fee_hint">\u672a\u542b\u8fd0\u8d39</span>\uff09\n            </div>\n        </div>\n    </div>\n    <div class="orders-total-ft-placeholder">\n        <div class="orders-total-ft" id="J_accountBar">\n            <div class="orders-total-amount">\n                <p class="orders-total-amount-text">\n                    \u603b\u91d1\u989d\uff08<span class="J_pms_fee_hint">\u672a\u542b\u8fd0\u8d39</span>\uff09\uff1a\n                    <span class="m-price">\n                        <span class="u-yen">&yen;</span><span class="u-price J_info_total">{{amounts.payTotal}}</span>\n                    </span>\n                </p>\n            </div>\n            <div class="m-shopping-tips J_countDown">\n                <p class="shopping-tips-text countdown-text J_countDown_normal">\n                    \u8bf7\u5728\u5012\u8ba1\u65f6\u7ed3\u675f\u524d\u7ed3\u7b97\n                </p>\n                <div class="c-tooltips-trigger tooltips-trigger-bottom shopping-guide-tooltips-trigger J_shopping_guide_tooltips" data-toggle="tooltip">\n                    <span class="vipFont if-query tooltips-trigger-icon">&#xe62f;</span>\n                    \x3c!-- \u4e0b\u5355\u63d0\u793a\u6d6e\u5c42 --\x3e\n                    <div class="ui-tooltips  ui-tooltips-bottom-right-arrow  shopping-guide-tooltips">\n                        <div class="ui-tooltips-arrow">\n                            <span class="arrow arrow-out">&#9670;</span>\n                            <span class="arrow">&#9670;</span>\n                        </div>\n                        <div class="ui-tooltips-content">\n                            <ul class="m-list e-disc-list">\n                                <li class="list-item">\u597d\u5546\u54c1\u9700\u8981\u7cbe\u6311\u7ec6\u9009\uff0c\u7279\u610f\u4e3a\u4f60\u7559\u8db320\u5206\u949f\u8003\u8651\u65f6\u95f4\uff1b\n                                </li>\n                            </ul>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            \x3c!-- \u5e7f\u544a --\x3e\n            \x3c!-- \u5012\u8ba1\u65f6 --\x3e\n            <div class="orders-total-ft-ad f-hide J_ad_ADADS4P87A"></div>\n            <a class="ui-btn-primary  ui-btn-large  ui-btn-loading  btn-orders-submit J_checkout  J_fake_a" role="button" href="###" mars_sead="cart_checkout_btn" id="J_checkout">\n                <span class="ui-btn-loading-before  J_countDown">\u7acb\u5373\u7ed3\u7b97<span class="J_submit_countdown submit-countdown"><span class="J_operate_countDown_min">00</span>&nbsp;:&nbsp;<span class="J_operate_countDown_sec">00</span></span></span>\n                <span class="ui-btn-loading-after"><span class="ii-loading-gray-24x24"></span></span>\n            </a>\n        </div>\n    </div>\n\x3c/script>';
        var template = require("../../../../../../../libDeprecated/js/plugins/modules/template");
        var VipUI = require("../../../../../../../libDeprecated/js/plugins/modules/ui");
        var CommonPop = require("../../../../../../../libDeprecated/js/plugins/modules/ui/modules/CommonPop");
        var Simulate = require("../../../../../../../libDeprecated/js/plugins/modules/Simulate");
        var ViewTools = require("../../../../../../../libDeprecated/js/plugins/modules/OrderUtil/ViewTools");
        var Statistics = require("../../../../../../../libDeprecated/js/plugins/modules/Statistics");
        var Pin = require("../../../../../../../libDeprecated/js/plugins/modules/Pin/Pin");
        var CartView = {
            data: {
                cartDataTmplData: {},
                accountBar: "",
                interval: null,
                checkedSize: "",
                unavailableSize: "",
                supplierId_sizeIds: [],
                sizeIds: "",
                checkboxType: 0,
                curTip: null,
                tipsCount: 0,
                onAnimate: false,
                onAnimateEnd: null
            },
            tmpl: {
                errPop: "J_pop_error",
                orderTmplId: "J_orders_template",
                amountTmplId: "J_cart_amount"
            },
            events: {
                pub: {
                    submitCart: "submit.cart",
                    modifyNum: "cart.modify.num",
                    deleteItem: "delete.item",
                    callMarSeed: "call.mar.seed",
                    checkSupplier: "cart.check.supplier",
                    cartGetCart: "cart.getCart"
                },
                sub: {
                    cartGetCartSuccess: "cart.getCart.success",
                    cartGetAdditionalSuccess: "cart.getAdditional.success",
                    submitCartFail: "submit.cart.fail",
                    cartChanged: "cart.changed",
                    checkSupplierSuccess: "cart.check.supplier.success",
                    checkSupplierFail: "cart.check.supplier.fail",
                    modifyNumSuccess: "act.change.success",
                    modifyNumFail: "act.change.fail",
                    deleteItemSuccess: "delete.item.success",
                    deleteItemFail: "delete.item.fail"
                }
            },
            UI: {
                jqCartListModule: $("#J_cart_list"),
                jqAmountModule: $("#J_amount_mod"),
                jqPricePanel: ".J_price_panel",
                jqSubmitBtn: ".J_checkout",
                jqOrder: ".J_order",
                jqSupplier: ".J_supplier",
                jqCheckbox: ".J_checkbox",
                jqOrderActive: ".J_supplier_active_sec",
                jqGoodsGroup: ".J_goodsGroup",
                jqGoodsGroupActive: ".J_group_active_sec",
                jqGoodsItem: ".J_goods_item",
                jqAmountBox: ".J_cart_amount_confirm_box",
                jqAmountTriggerBtn: ".amount-trigger",
                jqAmountSubBtn: ".J_cart_numSubtract",
                jqAmountAddBtn: ".J_cart_numAdd",
                jqAmountTipsTxt: ".J_tip_txt",
                jqAmountInput: ".J_cart_num",
                jqAllDelBtn: ".J_cart_delLink",
                jqDelBtn: ".J_list_delLink",
                jqDelTxt: ".J_coupon_info",
                confirmBoxContainerSelector: ".J_confirm_box",
                jqDelTipsContainer: ".J_cart_del_confirm_box",
                cartItemConfirmTips: ".J_cart_item_confirm_tips",
                jqDelAllContainer: ".J_cart_all_del_box",
                cartItemConfirmdel: ".J_cart_item_confirm_box",
                jqModifyConfirm: ".J_cart_tips_modify_confirm",
                jqModifyCancel: ".J_cart_tips_modify_cancel",
                jqDeleteCancel: ".J_cart_tips_del_cancel",
                jqDelConfirm: ".J_cart_tips_del_confirm",
                jqDeleteAllCancel: ".J_cart_del_all_cancel",
                jqDelAllConfirm: ".J_cart_del_all_confirm",
                numEditErrTips: ".J_amount_error_tooltips",
                checkboxSelector: ".m-checkbox",
                pmsMsgSelector: ".J_pms_fee_hint",
                needed2BuyMoreLink: ".J_needed_to_buy_more_link",
                giftsContainer: ".J-gifts-container",
                expandMoreGift: ".J-trigger-gifts-expanded"
            },
            status: {
                hide: "f-hide",
                orderUncheckedCls: "z-orders-unchecked",
                groupActiveEnable: "promotion-on-box",
                groupActiveDisable: "promotion-off-box",
                amountLoading: "z-amount-locked",
                amountTriggerLoading: "z-amount-trigger-loading",
                amountTriggerDisable: "z-amount-trigger-disabled",
                tipsNostock: "amount-error-tooltips-nostock",
                delTipsLoading: "z-order-del-loading",
                delTipsInitSuccess: "z-order-del-init-success",
                delTipsShow: "is-order-del-active",
                orderCannotUncheckCls: "z-checkbox-disabled",
                checkboxCheckedCls: "z-checkbox-checked",
                isGiftsExpanded: "is-gifts-expanded",
                tooltipsIn: "z-ui-tooltips-in",
                freightDisplay: "f-freight-more-display"
            },
            init: function(initData) {
                $("body").append(orderListTpl);
                $("body").append(amountTotalTpl);
                this.bindListeners();
                this.initPlugins();
                this.bindEvent()
            },
            initPlugins: function() {
                var that = this;
                this.UI.errPop = new CommonPop({
                    tmplId: that.tmpl.errPop,
                    popConfig: {
                        size: "medium",
                        elStyle: "common-error-modal"
                    }
                })
            },
            bindListeners: function() {
                var that = this;
                $.Listeners.sub(that.events.sub.cartGetCartSuccess).onsuccess(function(cartData) {
                    that.data.sizeIds = cartData.sizeIds;
                    that.data.supplierId_sizeIds = cartData.supplierId_sizeIds;
                    that.data.checkedSize = cartData.checkedSize;
                    that.data.unavailableSize = cartData.unavailableSize;
                    that.renderCartList(cartData);
                    that.renderAmount(cartData)
                });
                $.Listeners.sub(that.events.sub.cartGetAdditionalSuccess).onsuccess(function(data) {
                    that.renderAdditional(data)
                });
                $.Listeners.sub(that.events.sub.submitCartFail).onsuccess(function(data) {
                    VipUI.Button.reset($(that.UI.jqSubmitBtn))
                });
                $.Listeners.sub(that.events.sub.cartChanged).onsuccess(function(data) {
                    if (data.render)
                        that.onCartChanged(data)
                });
                $.Listeners.sub(that.events.sub.modifyNumSuccess).onsuccess(function(data) {
                    that.onModifyNumSuccess(data)
                });
                $.Listeners.sub(that.events.sub.modifyNumFail).onsuccess(function(data) {
                    that.onModifyNumFail(data)
                });
                $.Listeners.sub(that.events.sub.deleteItemSuccess).onsuccess(function(data) {
                    that.onDeleteItemSuccess(data)
                });
                $.Listeners.sub(that.events.sub.deleteItemFail).onsuccess(function(data) {
                    that.onDeleteItemFail(data)
                });
                $.Listeners.sub(that.events.sub.checkSupplierSuccess).onsuccess(function(data) {
                    that.onCheckSupplierSuccess(data)
                });
                $.Listeners.sub(that.events.sub.checkSupplierFail).onsuccess(function(data) {
                    that.onCheckSupplierFail(data)
                })
            },
            bindEvent: function() {
                var that = this;
                $("body").on("click", function(e) {
                    var $dom = $(e.target);
                    if (that.data.tipsCount != 0 && $dom.closest(that.UI.cartItemConfirmTips).size() == 0)
                        that.closeAllTips()
                });
                $("body").on("click", ".J_checkout", function(e) {
                    var jqBtn = $(this);
                    if (!VipUI.Button.isDisable(jqBtn)) {
                        VipUI.Button.loading(jqBtn);
                        $.Listeners.pub(that.events.pub.submitCart).success({})
                    }
                });
                that.UI.jqCartListModule.on("click", that.UI.jqDelBtn, function(e) {
                    var jqBtn = $(this);
                    setTimeout(function() {
                        that.deleteItem(jqBtn)
                    }, 0)
                }).on("click", that.UI.jqAllDelBtn, function(e) {
                    var jqBtn = $(this);
                    setTimeout(function() {
                        that.deleteAllItem(jqBtn)
                    }, 0)
                }).on("click", that.UI.jqAmountSubBtn, function(e) {
                    var jqBtn = $(this);
                    setTimeout(function() {
                        that.modifyNum(jqBtn, {
                            type: "subtract"
                        })
                    }, 0)
                }).on("click", that.UI.jqAmountAddBtn, function(e) {
                    var jqBtn = $(this);
                    setTimeout(function() {
                        that.modifyNum(jqBtn, {
                            type: "add"
                        })
                    }, 0)
                }).on("change", that.UI.jqSupplier, function(e) {
                    var jqCheckbox = $(this);
                    that.checkSupplier(jqCheckbox)
                }).on("click", that.UI.jqDelAllConfirm, function(e) {
                    that.confirmDelAll($(this), {
                        confirm: true
                    })
                }).on("click", that.UI.jqDelConfirm, function(e) {
                    that.deleteItem($(this), {
                        confirm: true
                    })
                }).on("click", that.UI.jqModifyConfirm, function(e) {
                    var jqBtn = $(this);
                    that.modifyNum(jqBtn, {
                        confirm: true
                    })
                }).on("click", that.UI.jqDeleteAllCancel, function(e) {
                    that.cancelDelAll()
                }).on("click", that.UI.jqDeleteCancel, function(e) {
                    var jqItem = $(this).closest(that.UI.jqGoodsItem);
                    that.ConfirmTipssetStatus(jqItem, {
                        action: "delete"
                    })
                }).on("click", that.UI.jqModifyCancel, function(e) {
                    var jqItem = $(this).closest(that.UI.jqGoodsItem);
                    that.ConfirmTipssetStatus(jqItem, {
                        action: "modify"
                    })
                })
            },
            checkSupplier: function(jqCheckbox) {
                var that = this;
                var jqOrder = jqCheckbox.closest(this.UI.jqCheckbox), checkbox = jqOrder.data("checkbox"), sizeIds;
                switch (checkbox) {
                case "cartInfo":
                    sizeIds = that.data.sizeIds;
                    that.data.checkboxType = 1;
                    break;
                case "supplier":
                    var supplierId = jqOrder.data("supplier_id");
                    sizeIds = that.data.supplierId_sizeIds[supplierId];
                    that.data.checkboxType = 2;
                    break;
                case "item":
                    sizeIds = jqOrder.data("size_id");
                    that.data.checkboxType = 3;
                    break
                }
                if (!jqOrder.hasClass(that.status.orderCannotUncheckCls))
                    if (!jqOrder.hasClass(that.status.checkboxCheckedCls))
                        $.Listeners.pub(that.events.pub.checkSupplier).success({
                            size_ids: sizeIds,
                            operation_type: "checked"
                        });
                    else
                        $.Listeners.pub(that.events.pub.checkSupplier).success({
                            size_ids: sizeIds,
                            operation_type: "uncheck"
                        })
            },
            deleteAllItem: function() {
                var jqTips = $(this.UI.cartItemConfirmdel);
                var jqConfirmBoxContainer = $(this.UI.jqDelAllContainer);
                VipUI.Tooltips.open(jqTips);
                jqConfirmBoxContainer.addClass(this.status.delTipsShow)
            },
            confirmDelAll: function() {
                var that = this;
                var jqTips = $(this.UI.cartItemConfirmdel);
                var jqConfirmBoxContainer = $(this.UI.jqDelAllContainer);
                VipUI.Tooltips.close(jqTips);
                jqConfirmBoxContainer.removeClass(this.status.delTipsShow);
                $.Listeners.pub(that.events.pub.deleteItem).success({
                    confirm: false,
                    allDel: 1,
                    size_id: that.data.unavailableSize
                })
            },
            cancelDelAll: function() {
                var jqTips = $(this.UI.cartItemConfirmdel);
                var jqConfirmBoxContainer = $(this.UI.jqDelAllContainer);
                VipUI.Tooltips.close(jqTips);
                jqConfirmBoxContainer.removeClass(this.status.delTipsShow)
            },
            deleteItem: function(jqThis, opt) {
                var that = this;
                var set = {
                    confirm: false
                };
                $.extend(set, opt);
                var jqItem = jqThis.closest(this.UI.jqGoodsItem)
                  , jqConfirmBoxContainer = jqItem.find(this.UI.jqDelTipsContainer)
                  , jqTips = jqConfirmBoxContainer.find(this.UI.cartItemConfirmTips)
                  , supplier_id = jqItem.data("supplier_id")
                  , group_index = jqItem.data("group_index")
                  , product_id = jqItem.data("product_id")
                  , size_id = jqItem.data("size_id");
                if (set.confirm) {
                    VipUI.Tooltips.close(jqTips);
                    jqConfirmBoxContainer.removeClass(this.status.delTipsShow)
                }
                $.Listeners.pub(that.events.pub.deleteItem).success({
                    size_id: size_id,
                    supplier_id: supplier_id,
                    group_index: group_index,
                    product_id: product_id,
                    confirm: set.confirm
                })
            },
            onDeleteItemSuccess: function(data) {
                var that = this;
                for (var i = 0; i < data.length; i++) {
                    var jqItem = this.getGoodsItemBySizeId(data[i].size_id);
                    this.data.onAnimate = true;
                    jqItem.fadeOut(function() {
                        that.data.onAnimate = false;
                        if (that.data.onAnimateEnd != null) {
                            that.data.onAnimateEnd();
                            that.data.onAnimateEn == null
                        }
                    })
                }
            },
            onDeleteItemFail: function(data) {
                if (!data.size_id) {
                    this.UI.errPop.open({
                        msg: data.msg
                    });
                    return
                }
                var jqItem = this.getGoodsItemBySizeId(data.size_id);
                if (!data.allDel)
                    switch (data.code) {
                    case "CONFIRM":
                        this.ConfirmTipssetStatus(jqItem, {
                            isShow: true,
                            msg: data.msg,
                            del_mars: data.del_mars,
                            cancel_mars: data.cancel_mars,
                            pop_mars: data.pop_mars
                        });
                        break;
                    default:
                        this.ConfirmTipssetStatus(jqItem, {});
                        this.UI.errPop.open({
                            msg: data.msg
                        });
                        break
                    }
                else
                    this.UI.errPop.open({
                        msg: data.msg
                    })
            },
            onCheckSupplierSuccess: function(data) {
                var that = this;
                if (data.selectMessage) {
                    that.showToast("", data.selectMessage);
                    setTimeout(function() {
                        $.Listeners.pub(that.events.pub.cartGetCart).success()
                    }, 1E3)
                } else {
                    that.showToast("", "\u8bf7\u7a0d\u7b49...");
                    $.Listeners.pub(that.events.pub.cartGetCart).success()
                }
            },
            showToast: function(type, msg) {
                $(".J_toast").removeClass("hidden").find(".J_tooltips").addClass("z-ui-tooltips-in").find(".J_text").html(msg)
            },
            hideToast: function() {
                $(".J_toast").find(".J_tooltips").removeClass("z-ui-tooltips-in").end().addClass("hidden")
            },
            onCheckSupplierFail: function(data) {
                this.UI.errPop.open({
                    msg: data.msg
                })
            },
            modifyNum: function(jqThis, opt) {
                var that = this;
                var set = {
                    type: "",
                    confirm: false
                };
                $.extend(set, opt);
                var jqItem = jqThis.closest(this.UI.jqGoodsItem)
                  , jqAmountBox = jqItem.find(this.UI.jqAmountBox)
                  , jqCartNum = jqItem.find(".J_cart_num")
                  , num = parseInt(jqCartNum.val())
                  , size_id = jqCartNum.data("size_id");
                if (!jqThis.hasClass(that.status.amountTriggerDisable))
                    if (set.confirm || !jqAmountBox.hasClass(that.status.amountLoading)) {
                        if (!set.confirm) {
                            this.numberWidgetSetStatus(jqItem, {
                                jqBtn: jqThis
                            });
                            jqCartNum.attr({
                                source_num: num
                            });
                            if (set.type == "add")
                                num++;
                            else
                                num--
                        }
                        jqCartNum.val(num);
                        $.Listeners.pub(that.events.pub.modifyNum).success({
                            size_id: size_id,
                            num: num,
                            type: set.type,
                            confirm: set.confirm
                        })
                    }
            },
            onModifyNumSuccess: function(data) {
                var jqItem = this.getGoodsItemBySizeId(data.size_id);
                this.numberWidgetSetStatus(jqItem, {
                    loading: false
                })
            },
            onModifyNumFail: function(data) {
                var jqItem = this.UI.jqCartListModule.find(this.UI.jqGoodsItem + '[data-size_id="' + data.size_id + '"]')
                  , jqErrTips = jqItem.find(this.UI.numEditErrTips)
                  , jqConfirmBoxContainer = jqItem.find(this.UI.jqAmountBox)
                  , reset = true;
                switch (data.code) {
                case "SUBTRACT":
                case "CONFIRM":
                    this.ConfirmTipssetStatus(jqItem, {
                        action: "modify",
                        isShow: true,
                        msg: data.msg
                    });
                    reset = false;
                    break;
                case 6005:
                case 7002:
                    jqErrTips.removeClass(this.status.tipsNostock).find(this.UI.jqAmountTipsTxt).text(data.msg);
                    VipUI.Tooltips.open(jqErrTips, {
                        autoClose: 1500
                    });
                    break;
                default:
                    this.UI.errPop.open({
                        msg: data.msg
                    });
                    break
                }
                if (reset)
                    this.numberWidgetSetStatus(jqItem, {
                        loading: false,
                        resetNum: true
                    })
            },
            getOrderBySupplierId: function(supplier_id) {
                return this.UI.jqCartListModule.find(this.UI.jqOrder + '[data-supplier_id="' + supplier_id + '"]')
            },
            getGoodsItemBySizeId: function(size_id) {
                return this.UI.jqCartListModule.find(this.UI.jqGoodsItem + '[data-size_id="' + size_id + '"]')
            },
            closeAllTips: function() {
                var that = this;
                if (that.data.tipsCount != 0 && that.data.curTip)
                    this.ConfirmTipssetStatus(that.data.curTip.jqItem, {
                        action: that.data.curTip.action
                    })
            },
            ConfirmTipssetStatus: function(jqItem, opt) {
                var set = {
                    isShow: false,
                    action: "delete",
                    msg: ""
                };
                $.extend(set, opt);
                var jqConfirmBoxContainer = set.action == "delete" ? jqItem.find(this.UI.jqDelTipsContainer) : jqItem.find(this.UI.jqAmountBox)
                  , jqTips = jqConfirmBoxContainer.find(this.UI.cartItemConfirmTips);
                if (set.isShow) {
                    this.closeAllTips();
                    Statistics.init();
                    jqTips.find(this.UI.jqDelTxt).html(set.msg);
                    set.del_mars && jqTips.find(this.UI.jqDelConfirm).attr("mars_sead", set.del_mars);
                    set.cancel_mars && jqTips.find(this.UI.jqDeleteCancel).attr("mars_sead", set.cancel_mars);
                    VipUI.Tooltips.open(jqTips);
                    $.Listeners.pub(this.events.pub.callMarSeed).success({
                        mars_sead: set.pop_mars,
                        data_mars: {}
                    });
                    jqConfirmBoxContainer.addClass(this.status.delTipsShow);
                    this.data.curTip = {
                        jqItem: jqItem,
                        action: set.action
                    };
                    this.data.tipsCount++
                } else {
                    VipUI.Tooltips.close(jqTips);
                    jqConfirmBoxContainer.removeClass(this.status.delTipsShow);
                    this.data.curTip = null;
                    this.data.tipsCount--;
                    if (set.action == "modify")
                        this.numberWidgetSetStatus(jqItem, {
                            loading: false,
                            resetNum: true
                        })
                }
            },
            numberWidgetSetStatus: function(jqItem, opt) {
                var set = {
                    jqBtn: jqItem.find(this.UI.jqAmountTriggerBtn),
                    loading: true,
                    resetNum: false
                };
                $.extend(set, opt);
                var jqAmountBox = jqItem.find(this.UI.jqAmountBox)
                  , jqCartNum = jqItem.find(this.UI.jqAmountInput);
                if (set.loading) {
                    set.jqBtn.addClass(this.status.amountTriggerLoading);
                    jqAmountBox.addClass(this.status.amountLoading)
                } else {
                    set.jqBtn.removeClass(this.status.amountTriggerLoading);
                    jqAmountBox.removeClass(this.status.amountLoading);
                    if (set.resetNum)
                        jqCartNum.val(jqCartNum.attr("source_num"))
                }
            },
            onCartChanged: function(data) {
                var that = this
                  , set = {
                    action: data.action || "",
                    couponSns: data.couponSns || ""
                };
                if (this.data.onAnimate)
                    this.data.onAnimateEnd = function() {
                        $.Listeners.pub(that.events.pub.cartGetCart).success(set);
                        that.UI.jqCartListModule.html();
                        that.UI.jqAmountModule.html()
                    }
                    ;
                else
                    $.Listeners.pub(that.events.pub.cartGetCart).success(set)
            },
            renderCartList: function(data) {
                var that = this;
                that.data.cartDataTmplData = {};
                $(".J_cart_header").addClass("isNewCart");
                var tmpHTML = template(that.tmpl.orderTmplId, {
                    cartList: data
                });
                that.UI.jqCartListModule.html(tmpHTML)
            },
            renderAdditional: function(data) {
                var that = this;
                if (!$.isEmptyObject(data) && !$.isEmptyObject(data.sizeIdProductInfoMap))
                    for (var key in data.sizeIdProductInfoMap)
                        for (var i = 0; i < data.sizeIdProductInfoMap[key].extTipsList.length; i++) {
                            var extTipsList = data.sizeIdProductInfoMap[key].extTipsList[i];
                            if (extTipsList.type == "7")
                                $('tr[data-size_id="' + key + '"]').addClass("is-goods-row-show-stock")
                        }
            },
            renderAmount: function(data) {
                var that = this;
                var amountTotalTpl = template(that.tmpl.amountTmplId, data.cartInfo);
                that.UI.jqAmountModule.html(amountTotalTpl);
                if (data.isAllUnAvailable) {
                    $(that.UI.jqPricePanel).addClass("hidden");
                    VipUI.Button.disable($(that.UI.jqSubmitBtn))
                }
                if (!that.data.checkedSize) {
                    $(".J_submit_countdown,.J_title_countDown").addClass("hidden");
                    VipUI.Button.disable($(that.UI.jqSubmitBtn))
                }
                var time = data.cartInfo.time.remainingTime;
                if (time != 0) {
                    this.data.interval && clearInterval(this.data.interval);
                    this.data.interval = setInterval(function() {
                        time--;
                        that.CartCountDown(time)
                    }, 1E3);
                    $(".J_submit_countdown,.J_title_countDown").removeClass("hidden")
                } else {
                    $(".J_submit_countdown,.J_title_countDown").addClass("hidden");
                    VipUI.Button.disable($(that.UI.jqSubmitBtn))
                }
                var couponFavTips = "";
                if (data.cartInfo.amountDetails && (data.cartInfo.amountDetails.itemList && !$.isEmptyObject(data.cartInfo.amountDetails.itemList)))
                    for (var inList in data.cartInfo.amountDetails.itemList) {
                        var thisList = data.cartInfo.amountDetails.itemList[inList];
                        if (thisList.type == 2 && thisList.isCoupon == true)
                            couponFavTips = thisList.amount
                    }
                $(".J_coupon_fav_money").html(couponFavTips);
                that.data.accountBar = new Pin({
                    $el: $("#J_accountBar"),
                    activeClass: "pin-orders-total-ft",
                    containerSelector: ".J_accountBar_position_container"
                })
            },
            CartCountDown: function(time) {
                var that = this
                  , time = parseInt(time)
                  , min = 0
                  , sec = 0;
                min = parseInt(time / 60) >= 10 ? parseInt(time / 60) : "0" + parseInt(time / 60);
                sec = parseInt(time % 60) >= 10 ? parseInt(time % 60) : "0" + parseInt(time % 60);
                $(".J_operate_countDown_min").html(min);
                $(".J_operate_countDown_sec").html(sec);
                if (time == 0) {
                    clearInterval(that.data.interval);
                    $.Listeners.pub(that.events.pub.cartGetCart).success()
                }
                return that
            }
        };
        module.exports = CartView
    }
    , {
        "../../../../../../../libDeprecated/js/plugins/modules/OrderUtil/ViewTools": 42,
        "../../../../../../../libDeprecated/js/plugins/modules/Pin/Pin": 46,
        "../../../../../../../libDeprecated/js/plugins/modules/Simulate": 54,
        "../../../../../../../libDeprecated/js/plugins/modules/Statistics": 55,
        "../../../../../../../libDeprecated/js/plugins/modules/template": 58,
        "../../../../../../../libDeprecated/js/plugins/modules/ui": 60,
        "../../../../../../../libDeprecated/js/plugins/modules/ui/modules/CommonPop": 63
    }],
    16: [function(require, module, exports) {
        var Header = require("../../../../libDeprecated/js/common/modules/header/headInfo4Order.js");
        var nsArea = require("../../../../libDeprecated/js/bo/address/nsArea.js");
        var cartArea = require("../../../../libDeprecated/js/cart/te5/modules/area");
        var nsAdSense = require("../../../../libDeprecated/js/checkout/te/4/modules/ad/nsAdSense");
        var nsUE = require("../../../../libDeprecated/js/plugins/modules/OrderUtil/ue");
        var Pin = require("../../../../libDeprecated/js/plugins/modules/Pin/Pin");
        var FakeA = require("../../../../libDeprecated/js/plugins/modules/Simulate/FakeA");
        var Simulate = require("../../../../libDeprecated/js/plugins/modules/Simulate");
        var nsCrossPop = require("../../../../libDeprecated/js/plugins/modules/OrderUtil/nsCrossPop");
        var chkLevel = require("../../../../libDeprecated/js/plugins/modules/ChkLevel/chkLevel");
        var VipUI = require("../../../../libDeprecated/js/plugins/modules/ui");
        var LazyDomHelper = require("../../../../libDeprecated/js/plugins/modules/Scroll/LazyDomHelper");
        var CommonHFR = require("../../../../libDeprecated/js/plugins/modules/CommonHFR");
        var Statistics = require("../../../../libDeprecated/js/plugins/modules/Statistics");
        var inf = require("../../../../libDeprecated/js/plugins/modules/OrderUtil/inf");
        var nsRecord = require("../../../../libDeprecated/js/cart/te5/modules/record/record");
        var Similar = require("../../../../libDeprecated/js/cart/te5/modules/similar/index.js");
        require("../../../../libDeprecated/js/bo/mars/tools.js");
        var fixedFloatTitle = require("../../../../libDeprecated/js/plugins/modules/floatNav");
        var cartServ = require("../../../../../../api/serv/cart/cartList/index.js");
        var cartModule = require("../../component/module/cart/cartList");
        var newCartModule = require("../../component/module/cart/newCartList");
        var couponModule = require("../../component/module/cart/coupon/Coupon");
        $.Var.set("areaLevel", 4);
        $.Var.set("adIds", {
            "commonTopAd": {
                "id": "ADSSBZTY",
                "type": "text"
            },
            "couponAd": {
                "id": "ADSN5F4J",
                "type": "text"
            },
            "backToBuy": {
                "id": "ADS4P87A",
                "type": "text"
            },
            "couponTipsAd": {
                "id": "ADSWH236",
                "type": "img",
                "width": 266
            }
        });
        Header.init();
        chkLevel.init();
        if (UINFO.parseCookie()["luc"] && UINFO.parseCookie()["luc"].toUpperCase() == "c")
            $("#J_flowStep").removeClass("f-hide");
        $.Listeners.sub("ready.first").onsuccess(function() {
            FakeA.init();
            Simulate.init();
            nsArea.setArea({
                areaLevel: $.Var.get("areaLevel")
            });
            cartArea.init();
            cartServ.init();
            $.Listeners.sub("new.cart.switch").onsuccess(function(re) {
                if (re.data && re.data == 1)
                    newCartModule.init();
                else
                    cartModule.init()
            });
            couponModule.init({
                couponTipsAd: $.Var.get("adIds") && $.Var.get("adIds").couponTipsAd
            });
            nsAdSense.dftHiddenClass = "u-hidden"
        });
        $.Listeners.sub("ready.second").onsuccess(function() {
            $.Listeners.sub("new.cart.switch").onsuccess(function(re) {
                var lazyLoadHistoryRecord = new LazyDomHelper({
                    $dom: $("#J_cart_history_record_wrapper"),
                    preHeight: 100,
                    loadingFn: function(self) {
                        self.loading = true;
                        nsRecord.init({
                            jqContainer: $("#J_wrap_relate"),
                            cart_ver: re.data && re.data == 1 ? 4 : 2
                        })
                    }
                })
            });
            Similar.init({
                marsPrefix: {
                    cartlist: "cart",
                    dellist: "cart_dellist"
                },
                sourceFrom: {
                    cartlist: "similar1",
                    dellist: "similar2"
                }
            });
            nsCrossPop.init("cart");
            nsUE.init();
            Statistics.init();
            var LazyFooter = new LazyDomHelper({
                $dom: $("#J_vip_common_footer"),
                loadingFn: function(self) {
                    self.loading = true;
                    CommonHFR.load("J_vip_common_footer", {
                        type: "footer",
                        flogo: 0,
                        isGat: 0
                    }, {
                        successCallback: function() {
                            self.destroy()
                        },
                        completeCallback: function() {
                            self.loading = false
                        }
                    })
                }
            })
        });
        $.Listeners.sub("ready.third").onsuccess(function() {
            inf.init({
                initMod: ["mars"]
            })
        })
    }
    , {
        "../../../../../../api/serv/cart/cartList/index.js": 5,
        "../../../../libDeprecated/js/bo/address/nsArea.js": 17,
        "../../../../libDeprecated/js/bo/mars/tools.js": 20,
        "../../../../libDeprecated/js/cart/te5/modules/area": 25,
        "../../../../libDeprecated/js/cart/te5/modules/record/record": 27,
        "../../../../libDeprecated/js/cart/te5/modules/similar/index.js": 28,
        "../../../../libDeprecated/js/checkout/te/4/modules/ad/nsAdSense": 32,
        "../../../../libDeprecated/js/common/modules/header/headInfo4Order.js": 33,
        "../../../../libDeprecated/js/plugins/modules/ChkLevel/chkLevel": 37,
        "../../../../libDeprecated/js/plugins/modules/CommonHFR": 38,
        "../../../../libDeprecated/js/plugins/modules/OrderUtil/inf": 43,
        "../../../../libDeprecated/js/plugins/modules/OrderUtil/nsCrossPop": 44,
        "../../../../libDeprecated/js/plugins/modules/OrderUtil/ue": 45,
        "../../../../libDeprecated/js/plugins/modules/Pin/Pin": 46,
        "../../../../libDeprecated/js/plugins/modules/Scroll/LazyDomHelper": 49,
        "../../../../libDeprecated/js/plugins/modules/Simulate": 54,
        "../../../../libDeprecated/js/plugins/modules/Simulate/FakeA": 53,
        "../../../../libDeprecated/js/plugins/modules/Statistics": 55,
        "../../../../libDeprecated/js/plugins/modules/floatNav": 56,
        "../../../../libDeprecated/js/plugins/modules/ui": 60,
        "../../component/module/cart/cartList": 7,
        "../../component/module/cart/coupon/Coupon": 10,
        "../../component/module/cart/newCartList": 13
    }],
    17: [function(require, module, exports) {
        var nsArea = {
            data: {
                areaLevel: 1,
                varKey: "cartGlobalArea",
                isNotDArea: 0
            },
            getArea: function(isNotDArea) {
                var _this = this
                  , area = {}
                  , areaId = ""
                  , areaName = ""
                  , address = $.Cookie.get("vip_address") && $.parseJSON(decodeURIComponent(escape($.Cookie.get("vip_address"))))
                  , sid = address.sid
                  , sname = address.sname
                  , did = address.did
                  , dname = address.dname
                  , cid = address.cid
                  , cname = address.cname
                  , pid = address.pid
                  , pname = address.pname
                  , province = $.Cookie.get("vip_province")
                  , provinceName = $.Cookie.get("vip_province_name")
                  , sArea = this.data.areaLevel == 4 && this.checkAddress(sid, sname)
                  , dArea = this.data.areaLevel >= 3 && this.checkAddress(did, dname)
                  , cArea = this.data.areaLevel >= 2 && this.checkAddress(cid, cname)
                  , pArea = this.data.areaLevel >= 1 && this.checkAddress(pid, pname)
                  , isNotDArea = isNotDArea || this.data.isNotDArea;
                if (sArea) {
                    areaId = sArea.id;
                    if (isNotDArea)
                        if (sArea.name == "\u6211\u4e0d\u6e05\u695a")
                            areaName = dArea.name;
                        else
                            areaName = sArea.name;
                    if (!isNotDArea) {
                        if (dArea)
                            areaName = dArea.name;
                        if (sArea.name != "\u6211\u4e0d\u6e05\u695a")
                            areaName = areaName + " " + sArea.name
                    }
                } else if (dArea) {
                    areaId = dArea.id;
                    areaName = dArea.name
                } else if (cArea) {
                    areaId = cArea.id;
                    areaName = cArea.name
                } else if (pArea) {
                    areaId = pArea.id;
                    areaName = pArea.name
                } else {
                    areaId = province || "";
                    areaName = provinceName || ""
                }
                return {
                    areaId: areaId,
                    areaName: areaName
                }
            },
            checkAddress: function(areaId, areaName) {
                if (areaId && areaName)
                    return {
                        id: areaId,
                        name: areaName
                    };
                return false
            },
            checkArea: function(areaId, configLevel) {
                if (areaId == -1)
                    return true;
                var _this = this
                  , address = $.Cookie.get("vip_address") && $.parseJSON(decodeURIComponent(escape($.Cookie.get("vip_address"))));
                function check(level, defaultAreaId, areaId) {
                    var flag = 0
                      , result = 0;
                    for (var i in level)
                        if (_this.data.areaLevel == level[i])
                            flag = 1;
                    if (!flag)
                        result = 1;
                    else if (defaultAreaId == areaId)
                        result = 1;
                    else
                        result = 0;
                    return result
                }
                switch (configLevel) {
                case "province":
                    return check([1, 2, 3, 4], address.pid, areaId);
                    break;
                case "city":
                    return check([2, 3, 4], address.cid, areaId);
                    break;
                case "district":
                    return check([3, 4], address.did, areaId);
                    break;
                case "street":
                    return check([4], address.sid, areaId);
                    break
                }
            },
            setArea: function(initData) {
                this.data.areaLevel = initData && initData.areaLevel || this.data.areaLevel;
                this.data.varKey = initData && initData.varKey || this.data.varKey;
                this.data.isNotDArea = initData && initData.isNotDArea || this.data.isNotDArea;
                var thisArea = this.getArea();
                $.Var.set(this.data.varKey, thisArea)
            }
        };
        module.exports = nsArea
    }
    , {}],
    18: [function(require, module, exports) {
        var User = {
            userClass: VIPSHOP.Member.parseCookie().suc || "",
            isOldUser: function() {
                var mainUserClass = this.userClass.substring(0, 1).toUpperCase();
                return mainUserClass === "C" ? 1 : 0
            },
            getMainType: function() {
                var mainUserClass;
                if (this.userClass)
                    mainUserClass = this.userClass;
                else
                    mainUserClass = "0";
                return mainUserClass
            }
        };
        module.exports = User
    }
    , {}],
    19: [function(require, module, exports) {
        var takeErrorCode = {
            data: {
                defaultCode: 0,
                code: {
                    "www": 1,
                    "list": 2,
                    "detail": 3,
                    "pcapi": 4,
                    "cart": 5,
                    "checkout": 6
                },
                statusCode: {
                    "emptyCode": "0100",
                    "otherCode": "0199",
                    "error": "0101",
                    "timeout": "0102",
                    "parsererror": "0103",
                    "abort": "0104",
                    "notRequest": "0105"
                }
            },
            init: function(data) {
                var traceId = this.takeTraceId(data.traceId)
                  , time = this.takeTime(data.time)
                  , curDomainCode = this.takeCurrentDomain()
                  , serverDomainCode = this.takeServerDomain(data.serverDomain);
                code = this.takeCode(data.codeInfo);
                return "\u9519\u8bef\u4ee3\u7801\uff1a\uff08" + traceId + "|" + time + "|" + curDomainCode + serverDomainCode + code + "\uff09"
            },
            takeTraceId: function(traceId) {
                if (!traceId) {
                    var marsCid = $.Cookie.get("mars_cid") ? $.Cookie.get("mars_cid") : "000000";
                    traceId = "-" + marsCid.substring(marsCid.length - 6)
                }
                return traceId
            },
            takeTime: function(time) {
                if (!time) {
                    time = (new Date).getTime() + "";
                    time = time.substring(time.length - 5)
                }
                return time
            },
            takeCurrentDomain: function() {
                var code = this.data.code[location.host.split(".")[0]];
                return code ? code : this.defaultCode
            },
            takeServerDomain: function(serverDomain) {
                var code = this.data.code[serverDomain];
                return code ? code : this.defaultCode
            },
            takeCode: function(data) {
                var code = data.code || "";
                if (data.scene)
                    code = this.data.statusCode[data.scene] ? this.data.statusCode[data.scene] : this.data.statusCode.otherCode;
                else if (!code)
                    code = this.data.statusCode.emptyCode;
                return code
            }
        };
        module.exports = takeErrorCode
    }
    , {}],
    20: [function(require, module, exports) {
        var marsTracker = require("@vmr/mars_sdk_web");
        var urlParam = require("../../../../../../api/apiLib/http/urlParam.js");
        $(function() {
            var data = null
              , refer_url = urlParam.query("refer_url");
            if (location.pathname.indexOf("suggest.php") > -1)
                data = {
                    refer_url: refer_url ? refer_url : "https://search.vip.com/"
                };
            if (!data && refer_url)
                data = {
                    refer_url: refer_url
                };
            marsTracker.initPage(data)
        })
    }
    , {
        "../../../../../../api/apiLib/http/urlParam.js": 3,
        "@vmr/mars_sdk_web": 1
    }],
    21: [function(require, module, exports) {
        var Http = require("../../../../../../api/apiLib/http/httpV2.js");
        var nsArea = require("../address/nsArea.js");
        var nsListPmsMod = {
            url: {
                getPmsTipsApi: "//pmsgw.vip.com/1.0.2/jsonPromotionPriceAndTipsList"
            },
            data: {
                ajaxIndex: 0,
                salesNoData: {},
                requestLimit: 10,
                maxRequestLimit: 50,
                ajaxFlag: "jsonPromotionPriceAndTipsList",
                ajaxParam: null,
                userLevel: $.Cookie.get("VipMonopoly"),
                userId: $.Cookie.get("VipRUID"),
                warehouse: $.Cookie.get("vip_wh"),
                customerSrc: VIPSHOP.Member.parseCookie()["luc"] ? VIPSHOP.Member.parseCookie()["luc"].toUpperCase() : ""
            },
            getPms: function(params) {
                if (params.requestLimit)
                    this.data.requestLimit = params.requestLimit > this.data.maxRequestLimit ? this.data.maxRequestLimit : params.requestLimit;
                if (!this.data.ajaxParam)
                    this.data.ajaxParam = params.ajaxParam;
                else
                    this.data.ajaxParam.brandList = this.data.ajaxParam.brandList.concat(params.ajaxParam.brandList);
                this.spliceDataToGetAjax()
            },
            spliceDataToGetAjax: function() {
                if (!this.data.ajaxLock) {
                    this.handleData();
                    this.getPmsAjax(this.spliceData())
                }
            },
            handleData: function() {
                var brandList = this.data.ajaxParam.brandList
                  , salesNoItem = {};
                for (var i = 0, len = brandList.length; i < len; i++) {
                    salesNoItem = this.data.salesNoData[brandList[i]["salesNo"]];
                    if (salesNoItem)
                        this.data.salesNoData[brandList[i]["salesNo"]] = salesNoItem.concat(brandList[i]["merchandiseList"]);
                    else
                        this.data.salesNoData[brandList[i]["salesNo"]] = brandList[i]["merchandiseList"];
                    brandList[i]["merchandiseList"] = []
                }
            },
            spliceData: function() {
                var calLen = 0
                  , brandList = this.data.ajaxParam.brandList
                  , salesNoItem = {}
                  , tempRequestData = {}
                  , requestData = []
                  , diff = 0;
                for (var i = 0, len = brandList.length; i < len; i++) {
                    tempRequestData = {};
                    salesNoItem = this.data.salesNoData[brandList[i]["salesNo"]];
                    if (salesNoItem && salesNoItem.length) {
                        calLen += salesNoItem.length;
                        if (calLen > this.data.requestLimit) {
                            diff = this.data.requestLimit - (calLen - salesNoItem.length);
                            if (diff > 0) {
                                tempRequestData = $.extend({}, brandList[i]);
                                tempRequestData.merchandiseList = salesNoItem.splice(0, diff)
                            }
                        } else if (calLen > 0) {
                            tempRequestData = $.extend({}, brandList[i]);
                            tempRequestData.merchandiseList = salesNoItem.splice(0, calLen);
                            brandList.splice(i, 1);
                            i = this.minusCal(i);
                            len = this.minusCal(len)
                        }
                        if (!$.isEmptyObject(tempRequestData))
                            requestData.push(tempRequestData)
                    }
                }
                return requestData
            },
            minusCal: function(num) {
                return num > 0 ? num - 1 : 0
            },
            getPmsAjax: function(brandList) {
                if (brandList.length == 0)
                    return;
                this.data.ajaxLock = true;
                nsArea.setArea({
                    varKey: "globalAreaForPms",
                    areaLevel: 4
                });
                var _this = this
                  , params = {
                    warehouse: _this.data.warehouse,
                    preview: 0,
                    platform: "1",
                    labels: {
                        customerSrc: _this.data.customerSrc,
                        mobilePlatform: "PC",
                        mobileChannel: "",
                        customerLevel: ""
                    },
                    brandList: [{
                        salesNo: "",
                        merchandiseList: [{
                            merchandiseNo: "",
                            skuId: "",
                            price: "",
                            saleStyle: ""
                        }]
                    }],
                    areaId: $.Var.get("globalAreaForPms").areaId.toString() || "",
                    userId: _this.data.userId
                };
                params = $.extend(params, this.data.ajaxParam);
                params.labels.customerLevel = _this.data.userLevel == "" ? "" : "V" + _this.data.userLevel;
                params.brandList = brandList;
                _this.data.ajaxIndex++;
                Http({
                    url: _this.url.getPmsTipsApi,
                    data: {
                        jsonRequest: $.stringifyJSON(params)
                    },
                    jsonp: "callback",
                    jsonpCallback: _this.data.ajaxFlag + _this.data.ajaxIndex,
                    dataType: "jsonp",
                    cache: true,
                    timeout: 8E3,
                    ajaxTryTimes: 1,
                    code: _this.data.ajaxFlag + "_ajax_err",
                    successCallback: function(re) {
                        _this.data.ajaxLock = false;
                        if (re.data)
                            $.Listeners.pub("promotionPriceAndTipsList.getData.success").success(re);
                        _this.spliceDataToGetAjax()
                    },
                    errorCallback: function() {
                        _this.data.ajaxLock = false;
                        $.Listeners.pub("promotionPriceAndTipsList.getData.error").success()
                    }
                })
            }
        };
        module.exports = nsListPmsMod
    }
    , {
        "../../../../../../api/apiLib/http/httpV2.js": 2,
        "../address/nsArea.js": 17
    }],
    22: [function(require, module, exports) {
        var Captcha = {
            uuid: 0,
            getImgUrl: function(data) {
                var tmpUrl;
                tmpUrl = "//pc-captcha.vip.com/captcha/get.php?";
                var fds_info = $.Var.get("fds_info");
                if (fds_info != undefined && fds_info != "")
                    tmpUrl = tmpUrl + "fds_info=" + fds_info + "&";
                if (data && data.type)
                    tmpUrl = tmpUrl + "type=" + data.type + "&";
                tmpUrl = tmpUrl + "uuid=" + this.getUuid() + "&_=" + Math.random();
                return tmpUrl
            },
            getUuid: function() {
                var uuid = this.uuid || ($.Cookie.get("mars_sid") || function() {
                    var _Math = Math;
                    function S4() {
                        return _Math.random().toString(36).substr(2, 4)
                    }
                    return [S4(), S4(), S4(), S4(), S4(), S4(), S4(), S4()].join("")
                }());
                this.uuid = uuid;
                return uuid
            }
        };
        module.exports = Captcha
    }
    , {}],
    23: [function(require, module, exports) {
        var marsCid = require("./../../../../plugins/mars_cids/index");
        var Http = require("../../../../../../../../api/apiLib/http/httpV2.js");
        var cartHost = VIPSHOP.cartHost;
        var addUrl = cartHost + "/add.php";
        var checkUrl = cartHost + "/check_cart.php";
        var commErrData = {
            code: 500,
            msg: "\u64cd\u4f5c\u5931\u8d25",
            result: 0
        };
        var Cart = {
            events: {
                addSuccess: "cart.add.success",
                addFail: "cart.add.fail",
                overHaitaoPolicy: "cart.add.overHaitaoPolicy",
                sellout: "cart.add.sellout",
                cartIsFull: "cart.add.cartIsFull",
                needCaptcha: "cart.add.needCaptcha",
                captchaErr: "cart.add.captchaErr",
                captchaEmpty: "cart.add.captchaEmpty",
                editSuccess: "cart.edit.success",
                editFail: "cart.edit.fail",
                removeSuccess: "cart.remove.success",
                removeFail: "cart.remove.fail",
                checkSuccess: "cart.check.success",
                checkFail: "cart.check.fail",
                askSuccess: "cart.askInfo.success",
                askFail: "cart.askInfo.fail",
                askLogin: "cart.ask.login",
                addMars: "cart.add.mars",
                needCaptchaV2: "cart.add.needCaptchaV2",
                captchaErrV2: "cart.add.captchaErrV2"
            },
            getList: function(paramObj, type) {
                var paramData = {}
                  , _this = this;
                type = 0;
                for (var key in paramObj)
                    paramData[key] = paramObj[key];
                switch (type) {
                case 1:
                    _this.url = VIPSHOP.cartHost + "/getCartList.php";
                    break;
                default:
                    _this.url = VIPSHOP.cartHost + "/cart.php";
                    break
                }
                Http({
                    url: _this.url,
                    data: paramData,
                    dataType: "jsonp",
                    timeout: 6E3,
                    successCallback: function(re) {
                        var eventType = Cart.events.askSuccess;
                        if (type)
                            switch (re.code) {
                            case 200:
                                eventType = Cart.events.askSuccess;
                                break;
                            case 2001:
                                eventType = Cart.events.askLogin;
                                break;
                            default:
                                eventType = Cart.events.askFail;
                                break
                            }
                        $.Listeners.pub(eventType).success(re)
                    },
                    errorCallback: function() {
                        $.Listeners.pub(Cart.events.askFail).success()
                    }
                })
            },
            add: function(paramObj, callback, options, marsObj) {
                var paramData = {};
                var act;
                if ($.isArray(paramObj)) {
                    for (var i = 0, iMax = paramObj.length; i < iMax; i++) {
                        var item = paramObj[i];
                        for (var key in item) {
                            var val = item[key];
                            paramData[key] ? paramData[key].push(val) : paramData[key] = [val]
                        }
                    }
                    act = "mul"
                } else {
                    for (var key in paramObj)
                        paramData[key] = paramObj[key];
                    act = ""
                }
                if (options && options.act)
                    act = options.act;
                paramData.act = act;
                paramData.client_time = Math.round((new Date).getTime() / 1E3);
                var mars_cid = $.Cookie.get("mars_cid");
                if (!mars_cid)
                    if (marsCid) {
                        mars_cid = marsCid.creat();
                        $.Cookie.set("mars_cid", mars_cid, ".vip.com", "/", 17520)
                    }
                paramData.mars_cid = mars_cid;
                Http({
                    url: addUrl,
                    data: paramData,
                    timeout: 8E3,
                    dataType: "jsonp",
                    jsonpCallback: "addCart",
                    successCallback: function(rtnData) {
                        var isSuccess = rtnData.code == 200;
                        var event = Cart.events.addFail;
                        switch (rtnData.code) {
                        case 200:
                            event = Cart.events.addSuccess;
                            break;
                        case 6005:
                            event = Cart.events.overHaitaoPolicy;
                            break;
                        case 7002:
                            event = Cart.events.sellout;
                            break;
                        case 4E3:
                            event = Cart.events.cartIsFull;
                            break;
                        case 2006:
                            event = Cart.events.needCaptcha;
                            $.Var.set("fds_info", rtnData.fds_info);
                            break;
                        case 5003:
                            event = Cart.events.captchaErr;
                            break;
                        case 5E4:
                            event = Cart.events.captchaEmpty;
                            break;
                        case 3003:
                            event = Cart.events.needCaptchaV2;
                            break;
                        case 3004:
                            event = Cart.events.captchaErrV2;
                            break;
                        default:
                            event = Cart.events.addFail;
                            break
                        }
                        setTimeout(function() {
                            $.Listeners.pub(event).success({
                                isSuccess: isSuccess,
                                code: rtnData.code,
                                result: rtnData.result,
                                msg: rtnData.msg,
                                rs: rtnData,
                                param: paramData
                            })
                        }, 200);
                        callback && callback(rtnData, isSuccess, paramData)
                    },
                    errorCallback: function(XMLHttpRequest, textStatus) {
                        $.Listeners.pub(Cart.events.addFail).success({
                            isSuccess: false,
                            code: commErrData.code,
                            result: commErrData.result,
                            msg: commErrData.msg,
                            param: paramData
                        });
                        callback && callback(commErrData, false, paramData, textStatus)
                    }
                });
                if (marsObj && (marsObj.scene_id && (marsObj.brand_id && marsObj.goods_id)))
                    $.Listeners.pub(Cart.events.addMars).success({
                        scene_id: marsObj.scene_id,
                        brand_id: marsObj.brand_id,
                        goods_id: marsObj.goods_id
                    })
            },
            checkCart: function(callback) {
                Http({
                    url: checkUrl,
                    jsonpCallback: "check_cart",
                    dataType: "jsonp",
                    timeout: 8E3,
                    successCallback: function(rtnData) {
                        var isSuccess = false;
                        if (rtnData.code == 0 || (rtnData.code == 1 || (rtnData.code == 2 || rtnData.code == 5))) {
                            isSuccess = true;
                            $.Listeners.pub(Cart.events.checkSuccess).success({
                                isSuccess: isSuccess,
                                code: rtnData.code,
                                msg: rtnData.msg,
                                unGoodsList: rtnData.unGoodsList,
                                endTime: rtnData.end_time
                            })
                        } else
                            $.Listeners.pub(Cart.events.checkFail).success({
                                isSuccess: false,
                                code: rtnData.code,
                                msg: rtnData.msg
                            });
                        callback && callback(isSuccess, rtnData.code, rtnData.msg, rtnData.end_time)
                    },
                    errorCallback: function() {
                        callback && callback(false, commErrData.code, commErrData.msg, null);
                        $.Listeners.pub(Cart.events.checkFail).success({
                            isSuccess: false,
                            data: null,
                            code: commErrData.code,
                            msg: commErrData.msg
                        })
                    }
                })
            }
        };
        module.exports = Cart
    }
    , {
        "../../../../../../../../api/apiLib/http/httpV2.js": 2,
        "./../../../../plugins/mars_cids/index": 35
    }],
    24: [function(require, module, exports) {
        var Http = require("../../../../../../../api/apiLib/http/httpV2.js");
        var Ue = {
            warehouse: $.Cookie.get("vip_wh"),
            storageKey: "UE_INFO",
            get: function(idArr) {
                var that = this
                  , remoteIds = [];
                $.crossStorage.get(that.storageKey, function(ds) {
                    if (ds != "")
                        if ($.isArray(idArr)) {
                            $.each(idArr, function(i, id) {
                                that._getDateById(id, ds, function(id) {
                                    remoteIds.push(id)
                                })
                            });
                            if (remoteIds.length != 0)
                                that.getByRemote(remoteIds)
                        } else
                            that._getDateById(idArr, ds, function(id) {
                                that.getByRemote(id)
                            });
                    else
                        that.getByRemote(idArr)
                })
            },
            getByRemote: function(idArr) {
                var that = this;
                Http({
                    url: "//pcapi.vip.com/ops/ued.php",
                    data: {
                        type: $.isArray(idArr) ? idArr.join(",") : idArr,
                        warehouse: that.warehouse
                    },
                    dataType: "jsonp",
                    jsonpCallback: "getSurvey",
                    cache: true,
                    timeout: 6E3,
                    ajaxTryTimes: 0,
                    code: "",
                    lock: true,
                    successCallback: function(re) {
                        if (re.code == 0 && re.data) {
                            $.each(re.data, function(id) {
                                that._onSuccess(id, re.data[id])
                            });
                            $.crossStorage.get(that.storageKey, function(ds) {
                                if (ds != "")
                                    ds = $.extend(ds, re.data);
                                else
                                    ds = re.data;
                                $.crossStorage.set(that.storageKey, ds, 1800, function() {})
                            })
                        }
                    },
                    errorCallback: function(XMLHttpRequest, textStatus, errorThrown) {
                        VIPSHOP.log("getUESurvey error:" + textStatus);
                        if ($.isArray(idArr))
                            $.each(idArr, function(id) {
                                $.Listeners.pub("get.ue.fail").success({
                                    id: "UE" + id,
                                    data: {}
                                })
                            });
                        else
                            $.Listeners.pub("get.ue.fail").success({
                                id: "UE" + idArr,
                                data: {}
                            })
                    }
                })
            },
            _getDateById: function(id, ds, nodataCallback) {
                if (ds["UE" + id])
                    this._onSuccess("UE" + id, ds["UE" + id]);
                else
                    nodataCallback(id)
            },
            _onSuccess: function(id, data) {
                $.Listeners.pub("get.ue.success").success({
                    id: id,
                    data: data
                })
            }
        };
        module.exports = Ue
    }
    , {
        "../../../../../../../api/apiLib/http/httpV2.js": 2
    }],
    25: [function(require, module, exports) {
        var mod = {
            init: function() {
                var areaName = $.Var.get("cartGlobalArea").areaName;
                if (areaName == "\u6211\u4e0d\u6e05\u695a")
                    areaName = $.Cookie.get("vip_address") && $.parseJSON(decodeURIComponent(escape($.Cookie.get("vip_address")))).dname;
                if (areaName)
                    $(".J_area_delivery_province").html(areaName).parent(".J_area_delivery_info").removeClass("f-hide")
            }
        };
        module.exports = mod
    }
    , {}],
    26: [function(require, module, exports) {
        var nsHandleUtil = {
            handleHref: function($dom, href, ff) {
                if (href && href.indexOf("###") == -1)
                    if ($dom.length && (href && ff)) {
                        var url = VIPSHOP.Url(href);
                        var search = url.search;
                        var searchObj = VIPSHOP.queryStringToJSON(search);
                        searchObj["ff"] = ff;
                        search = $.param(searchObj);
                        var index = href.indexOf("?");
                        href = href.slice(0, index + 1) + search;
                        $dom.attr("href", href)
                    }
            },
            handleMars: function($dom, mars) {
                $dom.attr("mars_sead", mars)
            }
        };
        module.exports = nsHandleUtil
    }
    , {}],
    27: [function(require, module, exports) {
        var CaptchaAPI = require("../../../../bo/te/captcha");
        var template = require("../../../../plugins/modules/template");
        var CallbackUtil = require("../../../../plugins/modules/OrderUtil/CallbackUtil2");
        var CallbackFilter = CallbackUtil.filter;
        var Cart = require("../../../../bo/te/cart/3/Cart");
        var VipUI = require("../../../../plugins/modules/ui");
        var AntiBrushPop = require("../../../../shop/modules/AntiBrushPop");
        var HandleUtil = require("../recommend/HandleUtil.js");
        var listPmsMod = require("../../../../bo/pms/listPms.js");
        var addCartMars = require("../../../../common/modules/mars/addCartMars");
        var urlParam = require("../../../../../../../../api/apiLib/http/urlParam.js");
        var Http = require("../../../../../../../../api/apiLib/http/httpV2.js");
        var nsRecord = {
            $container: $("#J_wrap_relate"),
            activeIndex: 0,
            deleteRecordTmpSuccess: 0,
            popError: null,
            noHoldStockPop: null,
            historyList: [],
            historyCartListObj: {},
            deleteItemsId: [],
            midArr: [],
            status: {
                btnLoading: "z-btn-loading",
                tabActiveCls: "is-tabs-title-active"
            },
            params: {
                brandId: "",
                goodsId: ""
            },
            data: {
                cart_ver: "2",
                captchaId: null,
                ticket: null,
                captchaV2: 0,
                captchaV2Dialog: null,
                sizeId: null
            },
            cartHistoryApi: "//mapi.vip.com/vips-mobile/rest/cart/pc/get_cart_history",
            buyNowLocation: "//checkout.vip.com/te2/?from=prepay_first&num=1",
            UI: {
                jqContainer: null,
                jqItemSelector: ".J_record_item",
                addCartBtnSelector: ".J_add_to_cart",
                jqTipTxt: ".J_tip_txt",
                tabTriggerCls: ".c-tab-title",
                tabPanelCls: ".c-tab-nav",
                recentViewTabPanelCls: ".J_recent_view_mod",
                deleteRecordTabPanelCls: ".J_delete_record_mod",
                deleteRecordGoodsListCls: ".J_delete_record_goods_link",
                addSuccessTipsCls: ".J_removed_items_add_success",
                addNoStockTipsCls: ".J_removed_items_add_no_stock",
                addLimitTipsCls: ".J_removed_items_add_limited",
                redirectBuyNow: ".J_redirect_buy_now"
            },
            tmpl: {
                deleteRecordTmplId: "J_delete_record_template",
                recentViewTmplId: "J_recent_view_template",
                popErrorTmplId: "J_delete_record_pop_error",
                popNoHoldStockAddErr: "J_no_hold_stock_add_error_pop_tmpl"
            },
            init: function(initData) {
                var that = this;
                this.UI.jqContainer = initData.jqContainer;
                this.data.cart_ver = initData.cart_ver;
                this.$container = this.UI.jqContainer;
                that.data.captchaV2 = 1;
                this.popError = new $.Dialog({
                    content: "",
                    model: true,
                    elStyle: "ui-dialog-medium",
                    effect: {
                        effect: "slide common-error-modal",
                        duration: 200
                    },
                    size: "medium",
                    opacity: 0.6,
                    zIndex: 100,
                    autoResize: true,
                    custom: true
                });
                this.noHoldStockPop = new $.Dialog({
                    content: "",
                    model: true,
                    elStyle: "ui-dialog-medium global-notice-modal",
                    effect: {
                        effect: "slide",
                        duration: 200
                    },
                    size: "medium",
                    opacity: 0.6,
                    zIndex: 100,
                    autoResize: true,
                    custom: true
                });
                this.antiBrush = AntiBrushPop.init();
                this.bindEvents();
                this.bindListeners();
                this.initHistoryRecord();
                this.recordBindEvents();
                var recentViewSwitch = 0;
                if (recentViewSwitch)
                    this.initRecentView();
                this.$container.Switchable({
                    panelCls: ".J_tabs_content",
                    triggerCls: "#J_wrap_relate ul",
                    trigger: "over",
                    delay: 200,
                    activeCls: this.status.tabActiveCls,
                    lazyload: false
                })
            },
            bindEvents: function() {
                $("body").on("click", ".J_delete_record_pop_close", function() {
                    nsRecord.popError.close()
                }).on("click", ".J_no_hold_stock_pop_close", function() {
                    nsRecord.noHoldStockPop.close()
                }).on("click", ".J_no_hold_stock_pop_gobuy", function() {
                    window.open(that.UI.jqContainer.find(that.UI.jqItemSelector + "[data-size_id=" + $(this).data("size_id") + "] " + that.UI.deleteRecordGoodsListCls).attr("href"));
                    nsRecord.noHoldStockPop.close()
                }).on("click", "#J_refresh_cart", function() {
                    location.reload()
                })
            },
            bindListeners: function() {
                var _this = this;
                $.Listeners.sub("promotionPriceAndTipsList.getData.success").onsuccess(function(re) {
                    if (re.data && re.data.tipsIndexModel) {
                        var tipsIndexModel = re.data.tipsIndexModel;
                        for (var i = 0, len = tipsIndexModel.length; i < len; i++)
                            if (tipsIndexModel[i].active)
                                _this.renderPms({
                                    id: tipsIndexModel[i].merchandiseNo,
                                    msg: tipsIndexModel[i].active.msg
                                })
                    }
                })
            },
            recordBindEvents: function() {
                $.Listeners.sub("delete.item.success").onsuccess(function(ds) {
                    if (nsRecord.deleteRecordTmpSuccess == 1)
                        nsRecord.initHistoryRecord()
                });
                nsRecord.UI.jqContainer.on("click", nsRecord.UI.addCartBtnSelector, nsRecord.addToCart);
                nsRecord.UI.jqContainer.on("click", nsRecord.UI.redirectBuyNow, nsRecord.redirectBuyNow);
                $.Listeners.sub(Cart.events.addSuccess).onsuccess(function(ds) {
                    nsRecord.afterAddToCart(ds.isSuccess, ds.msg, ds.param, Cart.events.addSuccess)
                });
                $.Listeners.sub(Cart.events.sellout).onsuccess(function(ds) {
                    nsRecord.afterAddToCart(ds.isSuccess, ds.msg, ds.param, Cart.events.sellout)
                });
                $.Listeners.sub(Cart.events.cartIsFull).onsuccess(function(ds) {
                    nsRecord.afterAddToCart(ds.isSuccess, ds.msg, ds.param, Cart.events.cartIsFull)
                });
                $.Listeners.sub(Cart.events.overHaitaoPolicy).onsuccess(function(ds) {
                    nsRecord.afterAddToCart(ds.isSuccess, ds.msg, ds.param, Cart.events.overHaitaoPolicy)
                });
                $.Listeners.sub(Cart.events.needCaptcha).onsuccess(function(ds) {
                    nsRecord.afterAddToCart(ds.isSuccess, ds.msg, ds.param, Cart.events.needCaptcha)
                });
                $.Listeners.sub(Cart.events.captchaErr).onsuccess(function(ds) {
                    nsRecord.afterAddToCart(ds.isSuccess, ds.msg, ds.param, Cart.events.captchaErr)
                });
                $.Listeners.sub(Cart.events.captchaEmpty).onsuccess(function(ds) {
                    nsRecord.afterAddToCart(ds.isSuccess, ds.msg, ds.param, Cart.events.captchaEmpty)
                });
                $.Listeners.sub(Cart.events.needCaptchaV2).onsuccess(function(ds) {
                    nsRecord.afterAddToCart(ds.isSuccess, ds.msg, ds.param, Cart.events.needCaptchaV2, ds.rs)
                });
                $.Listeners.sub(Cart.events.captchaErrV2).onsuccess(function(ds) {
                    nsRecord.afterAddToCart(ds.isSuccess, ds.msg, ds.param, Cart.events.captchaErrV2)
                });
                $.Listeners.sub(Cart.events.addFail).onsuccess(CallbackFilter("result", "cart", function(rtnData) {
                    var sizeId = rtnData.param.size_id
                      , jqItem = nsRecord.UI.jqContainer.find(nsRecord.UI.jqItemSelector + '[data-size_id="' + sizeId + '"]')
                      , jqBtn = jqItem.find(nsRecord.UI.addCartBtnSelector);
                    if (rtnData.result == 4011)
                        CallbackUtil.pop("cart", "cartf5", "\u5237\u65b0", "\u8d2d\u7269\u888b\u5546\u54c1\u5df2\u53d8\u66f4\uff0c\u8bf7\u5237\u65b0\u8d2d\u7269\u888b\u3002", "javascript:location.reload();");
                    else if (rtnData.result != -1) {
                        VipUI.Button.reset(jqBtn);
                        if (rtnData.code == 6006)
                            nsRecord.showNoHoldStockPop({
                                msg: rtnData.msg,
                                size_id: rtnData.param.size_id
                            });
                        else if (rtnData.code != 2003)
                            nsRecord.showError(rtnData.msg, "cart_bc_common_button")
                    } else
                        VipUI.Button.reset(jqBtn)
                }))
            },
            initHistoryRecord: function() {
                var _this = this;
                var params = urlParam.get({
                    vip_channel: "te",
                    channel: 1,
                    cart_ver: _this.data.cart_ver,
                    get_type: "1,2"
                });
                Http({
                    url: this.cartHistoryApi,
                    dataType: "jsonp",
                    data: params,
                    jsonpCallback: "getHistoryList",
                    timeout: 6E3,
                    successCallback: function(data) {
                        if (data.data && data.data.length > 0) {
                            _this.renderHistoryRecord(data.data);
                            _this.UI.jqContainer.removeClass("u-hidden")
                        }
                        _this.deleteRecordTmpSuccess = 1;
                        $.Listeners.pub("history.ajax.done").success()
                    },
                    errorCallback: function() {
                        VIPSHOP.log("\u8d2d\u7269\u888b\u5386\u53f2\u8bf7\u6c42\u5931\u8d25!");
                        $.Listeners.pub("history.ajax.done").success()
                    }
                })
            },
            renderHistoryRecord: function(data) {
                var that = this;
                var $historyMod = that.$container.find(that.UI.deleteRecordTabPanelCls);
                that.UI.jqContainer.removeClass("u-hidden");
                $(".J_delete_record_trigger").removeClass("u-hidden");
                that.handleHistoryCartList(data);
                var tmpHTML = template(that.tmpl.deleteRecordTmplId, {
                    "data": data
                });
                $historyMod.html(tmpHTML);
                $historyMod.Switchable({
                    panelCls: ".J_delete_record_scroll_list",
                    pervCls: ".J_delete_record_scroll_prev",
                    nextCls: ".J_delete_record_scroll_next",
                    firstCls: "is-carousel-trigger-previous-disabled",
                    lastCls: "is-carousel-trigger-next-disabled",
                    trigger: "over",
                    effect: "slideX",
                    delay: 200
                })
            },
            handleHistoryCartList: function(data) {
                var that = this;
                var temp = null;
                for (var i = 0, len = data.length; i < len; i++)
                    if (data.hasOwnProperty(i)) {
                        data[i].tag = "";
                        data[i].hideAddBtn = "";
                        data[i].prepayMsg = "";
                        data[i].btnMsg = "\u91cd\u65b0\u8d2d\u4e70";
                        data[i].buynow = 0;
                        temp = data[i];
                        data[i].link = "//detail.vip.com/detail-" + data[i].brand_id + "-" + data[i].product_id + ".html";
                        if (data[i].link.indexOf("?") > -1)
                            data[i].link += "&ff=dellist_other";
                        else
                            data[i].link += "?ff=dellist_other";
                        if (data[i].image)
                            data[i].image = data[i].image.replace(/^http:|https:/i, "");
                        if (data[i].size_stock != undefined && data[i].size_stock == 0)
                            data[i]["hideAddBtn"] = "ui-btn-disable";
                        if (data[i].selling && data[i].selling == 1)
                            if (data[i].type == 1) {
                                data[i]["hideAddBtn"] = "ui-btn-disable";
                                data[i].tag = "e-goods-mcarousel-soldout-tag"
                            } else {
                                if (data[i].type == 2) {
                                    data[i]["hideAddBtn"] = "ui-btn-disable";
                                    data[i].tag = "e-goods-mcarousel-haschance-tag"
                                }
                            }
                        else {
                            data[i].tag = "e-goods-mcarousel-takeoff-tag";
                            data[i]["hideAddBtn"] = "ui-btn-disable"
                        }
                        if (temp.isPrepay && temp.isPrepay == 1)
                            if (temp.pms_active && temp.pms_active.active_list)
                                for (var j in temp.pms_active.active_list)
                                    if (temp.pms_active.active_list[j].type == 11)
                                        data[i].prepayMsg = temp.pms_active.active_list[j].text;
                        if (temp.isLimitBySpu && temp.isLimitBySpu == 1)
                            data[i].hideAddBtn = "u-hidden";
                        if (temp.pre_hot && temp.pre_hot == 1) {
                            data[i].hideAddBtn = "u-hidden";
                            data[i].prepayMsg = data[i].pre_hot_tips ? data[i].pre_hot_tips : ""
                        } else if (temp.pre_hot != undefined && temp.pre_hot == 0)
                            if (temp.isPrepay == 1) {
                                data[i].btnMsg = "\u7acb\u5373\u9884\u5b9a";
                                data[i].buynow = 1
                            }
                        that.historyCartListObj[data[i]["sku_id"]] = data[i]
                    }
                that.historyCartList = data
            },
            showError: function(msg, marsOK) {
                var ds = {
                    msg: msg,
                    marsOK: marsOK || "cart_bc_common_button"
                };
                nsRecord.popError.open().content(template(nsRecord.tmpl.popErrorTmplId, ds))
            },
            showNoHoldStockPop: function(data) {
                nsRecord.noHoldStockPop.open().content(template(nsRecord.tmpl.popNoHoldStockAddErr, data))
            },
            addToCart: function(e) {
                var _this = nsRecord;
                var jqThis = $(this)
                  , jqItem = jqThis.parents(nsRecord.UI.jqItemSelector)
                  , sizeId = jqItem.data("size_id");
                _this.data.sizeId = sizeId;
                if (!jqThis.hasClass("ui-btn-disable"))
                    if (!VipUI.Button.isLoading(jqThis)) {
                        VipUI.Button.loading(jqThis);
                        if (window.mars_var == undefined)
                            window.mars_var = {};
                        window.mars_var.size_id = sizeId;
                        nsRecord.params.goodsId = jqThis.data("goods_id");
                        nsRecord.params.brandId = jqThis.data("brand_id");
                        Cart.add({
                            size_id: sizeId,
                            captchaV2: _this.data.captchaV2,
                            num: 1
                        }, nsRecord.addCartMars, {}, {
                            brand_id: jqThis.data("brand_id"),
                            goods_id: jqThis.data("goods_id"),
                            scene_id: "rebuy"
                        })
                    }
            },
            redirectBuyNow: function(e) {
                var jqThis = $(this)
                  , jqItem = jqThis.parents(nsRecord.UI.jqItemSelector)
                  , sizeId = jqItem.data("size_id");
                if (!jqThis.hasClass("ui-btn-disable")) {
                    var link = nsRecord.buyNowLocation;
                    if (link.indexOf("?") > -1)
                        link += "&";
                    else
                        link += "?";
                    window.open(link + "size=" + sizeId)
                }
            },
            addCartMars: function(dd, isSuccess, paramData, textStatus) {
                addCartMars.normalProduct({
                    brandId: nsRecord.params.brandId,
                    goodsId: nsRecord.params.goodsId,
                    sizeId: paramData.size_id
                })
            },
            afterAddToCart: function(isSuccess, msg, paramData, event, result) {
                var sizeId = paramData.size_id
                  , jqItem = nsRecord.UI.jqContainer.find(".J_addTips" + sizeId)
                  , jqBtn = jqItem.siblings(nsRecord.UI.addCartBtnSelector)
                  , that = this
                  , isShowTip = false;
                VipUI.Button.reset(jqBtn);
                switch (event) {
                case Cart.events.addSuccess:
                    msg = "\u5df2\u6210\u529f\u52a0\u5165\u8d2d\u7269\u888b";
                    setTimeout(function() {
                        location.href = "./"
                    }, 0);
                    isShowTip = true;
                    break;
                case Cart.events.sellout:
                    msg = "\u5546\u54c1\u5e93\u5b58\u4e0d\u8db3";
                    isShowTip = true;
                    break;
                case Cart.events.cartIsFull:
                    msg = "\u4eb2\uff0c\u8d2d\u7269\u888b\u5df2\u7ecf\u6ee1\u4e86";
                    var count_limit = $.Var.get("cartSkuCountLimit");
                    if (count_limit)
                        msg += "\uff0c\u6700\u591a\u80fd\u653e " + count_limit + " \u6b3e\u5546\u54c1";
                    isShowTip = true;
                    break;
                case Cart.events.needCaptcha:
                    var $dom = $(".J_addCartBtn" + sizeId);
                    var mid = $dom.data("goods_id");
                    var brand_id = $dom.data("brand_id");
                    this.antiBrush.open(function(captchaCode) {
                        Cart.add({
                            size_id: sizeId,
                            num: 1,
                            verify: "",
                            uuid: that.antiBrush.data.mars_sid,
                            captcha: captchaCode
                        }, "", {}, {
                            brand_id: brand_id,
                            goods_id: mid,
                            scene_id: "rebuy"
                        })
                    });
                    break;
                case Cart.events.captchaErr:
                    this.antiBrush.onVerifyFail("\u9a8c\u8bc1\u7801\u6709\u8bef\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165");
                    break;
                case Cart.events.captchaEmpty:
                    this.antiBrush.open(function(captchaCode) {
                        var $dom = $(".J_addCartBtn" + sizeId);
                        var mid = $dom.data("goods_id");
                        var brand_id = $dom.data("brand_id");
                        Cart.add({
                            size_id: sizeId,
                            num: 1,
                            verify: that.antiBrush.genVerify(mid),
                            uuid: that.antiBrush.data.mars_sid,
                            captcha: captchaCode
                        }, "", {}, {
                            brand_id: brand_id,
                            goods_id: mid,
                            scene_id: "rebuy"
                        })
                    });
                    break;
                case Cart.events.needCaptchaV2:
                    if (result.captchaType == 99)
                        isShowTip = true;
                    else
                        that.createCaptchaV2(result);
                    break;
                case Cart.events.captchaErrV2:
                    msg = "\u9a8c\u8bc1\u7801\u6709\u8bef\uff0c\u8bf7\u68c0\u67e5\u7cfb\u7edf\uff01";
                    isShowTip = true;
                    break
                }
                if (isShowTip) {
                    var msg = msg;
                    jqItem.find(".J_tip_txt").text(msg);
                    VipUI.Tooltips.open(jqItem)
                }
            },
            createCaptchaV2: function(rsData) {
                var _this = nsRecord;
                if (window.VipSecureCode) {
                    _this.openCaptchaV2Dialog();
                    _this.initCaptchaV2(rsData)
                }
            },
            openCaptchaV2Dialog: function() {
                var _this = nsRecord;
                if ($(".J_captcha_v2_cancel_btn").length == 0)
                    _this.data.captchaV2Dialog = $.Dialog({
                        model: true,
                        effect: {
                            effect: "slide",
                            duration: 200
                        },
                        size: "medium",
                        custom: true,
                        opacity: 0.3
                    });
                $(document).one("click", ".J_captcha_v2_cancel_btn, .J_couponFailClose", function() {
                    if (_this.data.captchaV2Dialog)
                        _this.data.captchaV2Dialog.close()
                });
                _this.data.captchaV2Dialog.open();
                _this.data.captchaV2Dialog.content($("#J_captcha_v2"))
            },
            initCaptchaV2: function(rsData) {
                var _this = nsRecord;
                window.VipSecureCode.init();
                var instanceConfig = {};
                var captchaV2Config = {
                    captchaId: rsData.captchaId,
                    templateId: rsData.templateId,
                    captchaType: rsData.captchaType,
                    extend: rsData.extend
                };
                _this.data.captchaId = rsData.captchaId;
                instanceConfig = {
                    targetId: "J_add_cart_captcha_v2",
                    params: captchaV2Config,
                    id: "J_add_cart_captcha_v2_dom",
                    exCls: "",
                    label: "top",
                    labelText: "",
                    onPassed: _this.captchaV2PassedCB,
                    onFailed: _this.captchaFailCB
                };
                window.VipSecureCode.load({
                    url: rsData.templateId,
                    success: function() {
                        _this.captchaInstance = window.VipSecureCode.createInstance(instanceConfig);
                        _this.captchaInstance.show()
                    },
                    error: function() {}
                })
            },
            captchaV2PassedCB: function(rtn) {
                var _this = nsRecord;
                _this.data.captchaV2Dialog.close();
                _this.sendReport({
                    "msg": "success",
                    "status": 200
                });
                Cart.add({
                    size_id: _this.data.sizeId,
                    num: 1,
                    captchaV2: 1,
                    captchaId: _this.data.captchaId,
                    captchaTicket: rtn.data.ticket
                }, _this.afterAddToCart, {}, {})
            },
            captchaFailCB: function() {
                var _this = nsRecord;
                _this.sendReport({
                    "msg": "failed",
                    "status": 0
                })
            },
            sendReport: function(param) {
                if (window.VIPSHOP && (window.VIPSHOP.sentry && window.VIPSHOP.sentry.sendHttpMessage))
                    VIPSHOP.sentry.sendHttpMessage({
                        api_name: "https://captcha.vip.com/getURL/record",
                        request_time: (new Date).getTime(),
                        response_time: (new Date).getTime(),
                        status: param.status,
                        request_url: "https://captcha.vip.com/getURL/record",
                        service_code: param.status,
                        msg: param.msg || "",
                        retryTimes: 0,
                        network_mark: 1
                    })
            },
            addDeleteRecord: function(model) {
                var that = this;
                var list = that.historyCartList;
                if (!model || !list)
                    return;
                if (list.length >= 24)
                    list.pop();
                list.unshift(model);
                that.renderHistoryRecord({
                    historyCartList: that.historyCartList
                })
            },
            pmsAjax: function(pmsArr) {
                var that = this;
                var dataObj = {
                    warehouse: $.Cookie.get("vip_wh"),
                    platform: 1,
                    labels: {
                        mobilePlatform: "PC",
                        customerSrc: UINFO.parseCookie().luc
                    },
                    areaId: $.Var.get("areaLevel") && $.Var.get("cartGlobalArea").areaId ? $.Var.get("cartGlobalArea").areaId.toString() : "",
                    tipsListItems: pmsArr
                };
                Http({
                    url: "//pmsgw.vip.com/1.0.2/jsonTipsList",
                    data: {
                        jsonRequest: $.stringifyJSON(dataObj)
                    },
                    dataType: "jsonp",
                    jsonpCallback: "tipsList",
                    timeout: 6E3,
                    cache: true,
                    successCallback: function(data) {
                        if (data && data.code == 200)
                            if (data.data && data.data.length) {
                                var data = data.data;
                                for (var i = 0, len = data.length; i < len; i++)
                                    if (data[i].active && data[i].active.length)
                                        that.renderPms({
                                            id: data[i].salesNo,
                                            msg: data[i].active[0].msg
                                        })
                            }
                    },
                    errorCallback: function(data) {
                        VIPSHOP.log(data)
                    }
                })
            },
            pmsListAjax: function(pmsListInfoArr) {
                var _this = this;
                listPmsMod.getPms({
                    ajaxParam: pmsListInfoArr
                })
            },
            renderPms: function(data) {
                $(".J_pmsBrand" + data.id).each(function(index, el) {
                    if (!$(el).hasClass("hasStockMsg")) {
                        var $dom = $(el);
                        $dom.removeClass("u-hidden").addClass("c-goods-carcousel-pms-info").find(".J_pmsInfo").html(data.msg);
                        var $recordItem = $dom.closest(".J_record_item");
                        var $pmsDom = $recordItem.find(".J_hrefPms" + data.id);
                        HandleUtil.handleHref($pmsDom, $pmsDom.attr("href"), "dellist_pms");
                        HandleUtil.handleMars($pmsDom, "cart_dellist_item_link_sale");
                        HandleUtil.handleMars($recordItem.find(".J_add_to_cart"), "cart_dellist_buy_btn_sale")
                    }
                })
            },
            initRecentView: function() {
                var that = this;
                Http({
                    url: VIPSHOP["frontHost"] + "/index-ajax.php",
                    jsonpCallback: "recentViewCallback",
                    data: {
                        act: "getViewed"
                    },
                    dataType: "jsonp",
                    timeout: 8E3,
                    successCallback: function(re) {
                        if (re.items !== "" && re.items.length > 0) {
                            that.UI.jqContainer.removeClass("u-hidden");
                            $(".J_recent_view_trigger").removeClass("u-hidden");
                            $.Listeners.sub("history.ajax.done").onsuccess(function() {
                                if ($(".J_delete_record_trigger").hasClass("u-hidden"))
                                    $(".J_recent_view_trigger").trigger("mouseenter")
                            });
                            var $recentMod = that.$container.find(that.UI.recentViewTabPanelCls);
                            var tmpHTML = template(that.tmpl.recentViewTmplId, re);
                            $recentMod.html(tmpHTML);
                            $recentMod.Switchable({
                                panelCls: ".J_recent_view_scroll_list",
                                pervCls: ".J_recent_view_scroll_prev",
                                nextCls: ".J_recent_view_scroll_next",
                                firstCls: "is-carousel-trigger-previous-disabled",
                                lastCls: "is-carousel-trigger-next-disabled",
                                trigger: "over",
                                effect: "slideX",
                                delay: 200
                            })
                        }
                    }
                })
            }
        };
        module.exports = nsRecord
    }
    , {
        "../../../../../../../../api/apiLib/http/httpV2.js": 2,
        "../../../../../../../../api/apiLib/http/urlParam.js": 3,
        "../../../../bo/pms/listPms.js": 21,
        "../../../../bo/te/captcha": 22,
        "../../../../bo/te/cart/3/Cart": 23,
        "../../../../common/modules/mars/addCartMars": 34,
        "../../../../plugins/modules/OrderUtil/CallbackUtil2": 40,
        "../../../../plugins/modules/template": 58,
        "../../../../plugins/modules/ui": 60,
        "../../../../shop/modules/AntiBrushPop": 67,
        "../recommend/HandleUtil.js": 26
    }],
    28: [function(require, module, exports) {
        var Similar = {
            model: require("./model/index.js"),
            view: require("./view/index.js"),
            init: function(opt) {
                this.model.init();
                this.view.init(opt)
            }
        };
        module.exports = Similar
    }
    , {
        "./model/index.js": 29,
        "./view/index.js": 31
    }],
    29: [function(require, module, exports) {
        var Http = require("../../../../../../../../../api/apiLib/http/httpV2.js");
        var Similar = {
            events: {
                pub: {
                    getSimilarSuccess: "get.similar.success",
                    getSimilarFail: "get.similar.fail"
                },
                sub: {
                    getSimilar: "get.similar"
                }
            },
            init: function() {
                this.bindListener()
            },
            bindListener: function() {
                var that = this;
                $.Listeners.sub(that.events.sub.getSimilar).onsuccess(function(data) {
                    that.getSimilar(data.mid, data.type)
                })
            },
            getSimilar: function(mid, type) {
                var that = this;
                Http({
                    url: "//pcapi.vip.com/vre/index.php",
                    data: {
                        act: "get_recommend_merchandise_list",
                        product_id: mid,
                        count: 15,
                        warehouse: $.Cookie.get("vip_wh"),
                        abtest_id: 520901
                    },
                    dataType: "jsonp",
                    jsonpCallback: "getSimilar",
                    cache: true,
                    timeout: 6E3,
                    ajaxTryTimes: 1,
                    code: "",
                    lock: true,
                    successCallback: function(re) {
                        if (re.code == 200)
                            $.Listeners.pub(that.events.pub.getSimilarSuccess).success({
                                type: type,
                                mid: mid,
                                data: re.data
                            });
                        else
                            $.Listeners.pub(that.events.pub.getSimilarFail).success({
                                type: type,
                                mid: mid,
                                msg: re.msg
                            })
                    },
                    errorCallback: function(XMLHttpRequest, textStatus, errorThrown) {
                        $.Listeners.pub(that.events.pub.getSimilarFail).success({
                            type: type,
                            mid: mid,
                            msg: "\u7cfb\u7edf\u7e41\u5fd9,\u8bf7\u7a0d\u540e\u91cd\u8bd5"
                        })
                    }
                })
            }
        };
        module.exports = Similar
    }
    , {
        "../../../../../../../../../api/apiLib/http/httpV2.js": 2
    }],
    30: [function(require, module, exports) {
        var RelativePannel = {
            display: false,
            curBtn: null,
            activeBtn: null,
            jqPannel: null,
            jqCnt: null,
            jqArrow: null,
            offsetLeft: 0,
            set: {
                cntSelector: ".J_cnt",
                arrowSelector: ".J_arrow",
                arrowWidth: 0,
                marginTop: 0
            },
            status: {
                hidden: "u-hidden"
            },
            init: function(jqPannel, opt) {
                this.set = $.extend(this.set, opt);
                this.jqPannel = jqPannel;
                this.jqCnt = this.jqPannel.find(this.set.cntSelector);
                this.jqArrow = this.jqPannel.find(this.set.arrowSelector);
                this.offsetLeft = this.getOffsetLeft();
                this.bindEvent();
                return this
            },
            bindEvent: function() {
                var that = this;
                $(window).on("resize", function() {
                    if (that.display) {
                        that.offsetLeft = that.getOffsetLeft();
                        that.setPos({
                            left: that.offsetLeft
                        })
                    }
                })
            },
            getOffsetLeft: function() {
                return $(window).width() / 2 - this.jqPannel.outerWidth() / 2
            },
            getOffsetTop: function($dom) {
                return this.set.marginTop + $dom.offset().top + $dom.outerHeight()
            },
            setPos: function(cssObj) {
                this.jqPannel.css(cssObj)
            },
            setArrow: function($dom) {
                var offsetLeft = $dom.offset().left + $dom.outerWidth() / 2 - (this.jqPannel.offset().left + this.set.arrowWidth / 2);
                this.jqArrow.css({
                    left: offsetLeft
                })
            },
            show: function(jqBtn, callback) {
                var that = this;
                this.setPos({
                    top: that.getOffsetTop(jqBtn),
                    left: that.offsetLeft == undefined ? that.getOffsetLeft() : that.offsetLeft
                });
                this.jqPannel.removeClass(this.status.hidden);
                this.setArrow(jqBtn);
                this.curBtn = jqBtn;
                this.display = true;
                !!callback && callback()
            },
            hide: function(callback) {
                this.jqPannel.addClass(this.status.hidden);
                this.curBtn = null;
                this.display = false;
                !!callback && callback()
            }
        };
        module.exports = RelativePannel
    }
    , {}],
    31: [function(require, module, exports) {
        var Template = require("../../../../../plugins/modules/template");
        var RelativePannel = require("./RelativePannel.js");
        var Similar = {
            set: {
                marsPrefix: {},
                sourceFrom: {}
            },
            cur: {
                type: "",
                id: 0
            },
            pannel: null,
            activeBtn: null,
            switchable: null,
            status: {
                hidden: "u-hidden",
                expanded: "is-trigger-similar-expanded"
            },
            tmpl: {
                loading: "J-tmpl-similar-loading",
                empty: "J-tmpl-similar-error-empty",
                error: "J-tmpl-similar-error-network",
                carousel: "J-tmpl-similar-carousel"
            },
            events: {
                pub: {
                    getSimilar: "get.similar"
                },
                sub: {
                    getSimilarSuccess: "get.similar.success",
                    getSimilarFail: "get.similar.fail"
                }
            },
            init: function(opt) {
                var that = this;
                this.set = $.extend(that.set, opt);
                this.pannel = RelativePannel.init($(".J-similar-container"), {
                    arrowWidth: 36,
                    marginTop: 13
                });
                this.bindEvent();
                this.bindListener()
            },
            bindEvent: function() {
                var that = this;
                $("body").on("click", function(e) {
                    var $dom = $(e.target)
                      , jqBtn = $dom.closest(".J_show_similar");
                    if (that.pannel.display) {
                        if ($dom.closest(".J-similar-container").size() == 0)
                            if (jqBtn.size() != 0 && !(jqBtn.attr("data-mid") == that.cur.id && jqBtn.attr("data-type") == that.cur.type))
                                that.showPannel(jqBtn);
                            else
                                that.hidePannel()
                    } else if (jqBtn.size() != 0)
                        that.showPannel(jqBtn)
                });
                this.pannel.jqCnt.on("click", ".J_index", function(e) {
                    var i = $(e.target).attr("data-index");
                    that.switchable.Switchable("switchTo", parseInt(i, 10))
                }).on("click", ".J_refresh", function(e) {
                    var el = $(e.target)
                      , mid = el.attr("data-mid")
                      , type = el.attr("data-type");
                    $.Listeners.pub(that.events.pub.getSimilar).success({
                        mid: mid,
                        type: type
                    });
                    setTimeout(function() {
                        that.onLoading()
                    }, 0)
                })
            },
            bindListener: function() {
                var that = this;
                $.Listeners.sub(that.events.sub.getSimilarSuccess).onsuccess(function(data) {
                    that.onSuccess(data)
                });
                $.Listeners.sub(that.events.sub.getSimilarFail).onsuccess(function(data) {
                    that.onFail(data)
                })
            },
            onSuccess: function(data) {
                var that = this;
                if (data.mid == this.cur.id && data.type == this.cur.type)
                    if (data.data.length == 0)
                        this.pannel.jqCnt.html(Template(this.tmpl.empty, {}));
                    else {
                        this.pannel.jqCnt.html(Template(this.tmpl.carousel, {
                            data: data.data,
                            marsPrefix: that.set.marsPrefix[data.type],
                            sourceFrom: that.set.sourceFrom[data.type]
                        }));
                        if (data.data.length > 5) {
                            this.switchable = this.pannel.jqCnt.find(".J_scroll_mod");
                            this.switchable.Switchable({
                                panelCls: ".J_similar_list",
                                pervCls: ".J_similar_list_prev",
                                nextCls: ".J_similar_list_next",
                                firstCls: "is-carousel-trigger-previous-disabled",
                                lastCls: "is-carousel-trigger-next-disabled",
                                trigger: "over",
                                effect: "slideX",
                                delay: 200,
                                switchEvent: function(i) {
                                    that.pannel.jqCnt.find(".J_index").eq(i).addClass("is-carousel-number-active").siblings().removeClass("is-carousel-number-active")
                                }
                            })
                        } else {
                            $(".lazy").lazyload();
                            this.pannel.jqCnt.find(".lazy").trigger("appear")
                        }
                    }
            },
            onFail: function(data) {
                if (data.mid == this.cur.id && data.type == this.cur.type)
                    this.pannel.jqCnt.html(Template(this.tmpl.error, data))
            },
            onLoading: function() {
                this.pannel.jqCnt.html(Template(this.tmpl.loading, {}))
            },
            showPannel: function(jqBtn) {
                var that = this;
                var mid = jqBtn.attr("data-mid")
                  , type = jqBtn.attr("data-type");
                if (this.activeBtn != null)
                    this.activeBtn.removeClass(this.status.expanded);
                jqBtn.addClass(this.status.expanded);
                this.onLoading();
                this.pannel.show(jqBtn, function() {
                    $.Listeners.pub(that.events.pub.getSimilar).success({
                        mid: mid,
                        type: type
                    })
                });
                this.activeBtn = jqBtn;
                this.cur.id = mid;
                this.cur.type = type
            },
            hidePannel: function() {
                this.activeBtn.removeClass(this.status.expanded);
                this.pannel.hide();
                this.activeBtn = null;
                this.cur.id = 0;
                this.cur.type = ""
            }
        };
        module.exports = Similar
    }
    , {
        "../../../../../plugins/modules/template": 58,
        "./RelativePannel.js": 30
    }],
    32: [function(require, module, exports) {
        var User = require("../../../../../bo/common/User");
        var Http = require("../../../../../../../../../api/apiLib/http/httpV2.js");
        var nsAdSense = {
            adData: {},
            adIds: [],
            dftHiddenClass: "f-hide  u-hidden",
            inited: false,
            loaded: false,
            areaId: null,
            customCallback: {},
            event: {
                sub: {
                    setWarehouseEnd: "set.warehouse.end"
                }
            },
            init: function(initData) {
                var that = this;
                if (!this.inited) {
                    this.inited = true;
                    $.Listeners.sub(that.event.sub.setWarehouseEnd).onsuccess(function(data) {
                        that.reset()
                    })
                }
                that.areaId = initData.areaId;
                if (initData.jieContext)
                    that.jieContext = initData.jieContext;
                for (var i = 0, iMax = initData.adDataArr.length; i < iMax; i++) {
                    var currAd = initData.adDataArr[i];
                    var dataKey = "AD" + currAd.id;
                    if (!this.adData[dataKey]) {
                        this.adIds.push(currAd.id);
                        this.adData[dataKey] = currAd
                    }
                }
                that.reset();
                return this
            },
            genAd: function(item, width) {
                var adHtmlStr;
                var adContentStr;
                if ($.trim(item.img))
                    adContentStr = this.genImg(item, width);
                else
                    adContentStr = item.name;
                if (item.link != "")
                    adHtmlStr = this.genLink(item, adContentStr);
                else
                    adHtmlStr = adContentStr;
                return adHtmlStr
            },
            genLink: function(item, content) {
                var adHtmlStr = '<a href="' + item.link + '"';
                if (item.blank)
                    adHtmlStr += ' target="_blank"';
                adHtmlStr += ">" + content + "</a>";
                return adHtmlStr
            },
            genImg: function(item, width) {
                return '<img alt="' + item.name + '" src="' + item.img + '" width="' + width + '"/>'
            },
            cache: {},
            reset: function() {
                var that = this;
                var warehouse = $.Cookie.get("vip_wh");
                var ids = this.adIds.join(",");
                var cacheKey = warehouse + "-" + ids;
                var data = this.cache[cacheKey];
                var params = {
                    type: ids,
                    warehouse: warehouse,
                    areaId: that.areaId
                };
                if (that.jieContext)
                    params.jie_context = $.stringifyJSON(that.jieContext);
                if (data)
                    this.loadCallback(data);
                else
                    Http({
                        url: "//pcapi.vip.com/cmc/index.php",
                        data: params,
                        cache: true,
                        jsonp: "callback",
                        jsonpCallback: warehouse + "_ads_api_" + this.adIds.length,
                        dataType: "jsonp",
                        timeout: 6E3,
                        successCallback: function(re) {
                            that.loaded = true;
                            that.cache[cacheKey] = re;
                            that.loadCallback(re)
                        }
                    })
            },
            loadCallback: function(re) {
                for (var key in re) {
                    var items = re[key].items;
                    if (key.indexOf("AD") == 0 && (items.length > 0 && this.adData[key])) {
                        if (this.customCallback[key])
                            this.customCallback[key](items);
                        else {
                            var hiddenClass = this.adData[key].hiddenClass || this.dftHiddenClass;
                            if (this.adData[key].type == "text") {
                                var jqAdContainer = $(".J_ad_" + key);
                                var jqAdxt = jqAdContainer.find(".J_ad_text");
                                if (jqAdxt.size() > 0)
                                    jqAdxt.html(this.genAd(items[0]));
                                else
                                    jqAdContainer.html(this.genAd(items[0]));
                                jqAdContainer.removeClass(hiddenClass).show()
                            } else
                                $(".J_ad_" + key).html(this.genAd(items[0], this.adData[key].width)).removeClass(hiddenClass).show()
                        }
                        if ($.isFunction(this.adData[key].callback))
                            this.adData[key].callback.call(this, items)
                    }
                }
            },
            addCustomCallback: function(id, cb) {
                this.customCallback["AD" + id] = cb;
                if (this.loaded)
                    this.reset();
                return this
            }
        };
        module.exports = nsAdSense
    }
    , {
        "../../../../../../../../../api/apiLib/http/httpV2.js": 2,
        "../../../../../bo/common/User": 18
    }],
    33: [function(require, module, exports) {
        var OnlineService = require("../../../plugins/modules/OrderUtil/OnlineService.js");
        var template = require("../../../plugins/modules/template");
        var nsHead = {
            data: {
                whereFrom: "",
                thirdLogout: "",
                thirdUrl: "",
                isThirdParty: 0,
                isNotRegister: 0
            },
            init: function(initData) {
                $.extend(this.data, initData);
                this.subEvent()
            },
            subEvent: function() {
                var _this = this;
                var jqHeaderLog = $("#J_head_log");
                $.Listeners.sub("loginSuccess").onsuccess(function(data) {
                    var srcUrl = VIPSHOP.userHost + "/logout?src=";
                    var afterTxt = $("#J_header_logAfter").html() || "";
                    var userName = $.Cookie.get("VipRNAME");
                    jqHeaderLog.addClass("login_after").removeClass("login_before").html(afterTxt.replace("{$J_header_account}", VIPSHOP.CutString(userName, 9)));
                    $("#J_header_lnkLogOut").on("click", function() {
                        if (_this.data.isThirdParty)
                            srcUrl = _this.data.thirdLogout + "?targe_url=" + encodeURIComponent(srcUrl + window.location.href);
                        else
                            srcUrl = srcUrl + encodeURIComponent(window.location.href);
                        location.href = srcUrl
                    })
                });
                $.Listeners.sub("unLogin").onsuccess(function() {
                    var srcUrl = encodeURIComponent(window.location.href);
                    if (_this.data.isThirdParty)
                        srcUrl = encodeURIComponent(_this.data.thirdUrl + "?targe_url=" + srcUrl) + "&whereFrom=" + _this.data.whereFrom;
                    jqHeaderLog.addClass("login_before").removeClass("login_after").html(template("J_header_logBefor", {
                        isNotRegister: _this.data.isNotRegister
                    }));
                    $("#J_header_lnkLogin").on("click", function() {
                        location.href = VIPSHOP.userHost + "/login?src=" + srcUrl
                    });
                    $("#J_header_lnkRegister").on("click", function() {
                        location.href = VIPSHOP.userHost + "/register?src=" + srcUrl
                    })
                });
                $(".J_header_olService").on("click", OnlineService)
            }
        };
        module.exports = nsHead
    }
    , {
        "../../../plugins/modules/OrderUtil/OnlineService.js": 41,
        "../../../plugins/modules/template": 58
    }],
    34: [function(require, module, exports) {
        var marsTracker = require("@vmr/mars_sdk_web");
        var addCartMars = {
            normalProduct: function(params) {
                var paramObj = $.extend({}, {
                    activityId: "0002"
                }, params);
                this.report(paramObj)
            },
            prepayProduct: function(params) {
                var paramObj = $.extend({}, {
                    activityId: "0009"
                }, params);
                this.report(paramObj)
            },
            globalProduct: function(params) {
                var paramObj = $.extend({}, {
                    activityId: "0013"
                }, params);
                this.report(paramObj)
            },
            report: function(params) {
                marsTracker.report({
                    activity_type: "tap",
                    activity_id: params.activityId,
                    activity_ext: {},
                    activity_data: {
                        goods_set: {
                            brand_id: params.brandId,
                            goods_id: params.goodsId,
                            size_id: params.sizeId
                        }
                    }
                })
            }
        };
        module.exports = addCartMars
    }
    , {
        "@vmr/mars_sdk_web": 1
    }],
    35: [function(require, module, exports) {
        var Cid = {
            creat: function() {
                var that = this;
                return this.encrypt(that._pad((new Date).getTime(), 13) + "_" + that._rand())
            },
            encrypt: function(timestamp_mar_id) {
                var mar_arr = timestamp_mar_id.split("_");
                var timestamp = mar_arr[0];
                var mar_id = mar_arr[1];
                if (!timestamp || !mar_id)
                    return timestamp_mar_id;
                var timestamp_sum = 0;
                var timestamp_len = timestamp.length;
                for (var i = 0; i < timestamp_len; i++)
                    timestamp_sum += parseInt(timestamp[i]);
                var replace_index = timestamp_sum % 32;
                var dechex_sum = timestamp_sum;
                var mar_id_len = mar_id.length;
                for (var i = 0; i < mar_id_len; i++)
                    if (i !== replace_index)
                        dechex_sum += parseInt(mar_id[i], 16);
                var replace_value = (dechex_sum % 16).toString(16);
                return timestamp + "_" + mar_id.substr(0, replace_index) + replace_value.toString() + mar_id.substr(replace_index + 1, mar_id_len)
            },
            _pad: function(num, n) {
                var len = num.toString().length;
                while (len < n) {
                    num = "0" + num;
                    len++
                }
                return num
            },
            _rand: function(len) {
                var x = "0123456789abcdef"
                  , tmp = ""
                  , i = 0;
                len = len || 32;
                for (; i < len; i++)
                    tmp += x.charAt(Math.ceil(Math.random() * 1E8) % x.length);
                return tmp
            }
        };
        module.exports = Cid
    }
    , {}],
    36: [function(require, module, exports) {
        var urlParam = require("../../../../../api/apiLib/http/urlParam.js");
        var Http = require("../../../../../api/apiLib/http/httpV2.js");
        var switchMod = {
            getSwitch: function(code) {
                var _this = this
                  , dtd = $.Deferred();
                Http({
                    url: "//mapi.vip.com/vips-mobile/rest/pcoperation/switch/v1",
                    data: urlParam.get({
                        switch_id: code
                    }),
                    cache: false,
                    dataType: "jsonp",
                    type: "GET",
                    jsonpCallback: "getPcOperation_" + code,
                    timeout: 8E3,
                    successCallback: function(re) {
                        if (re.code == 1 && (re.data && !$.isEmptyObject(re.data)))
                            dtd.resolve(re.data);
                        else
                            dtd.reject()
                    },
                    errorCallback: function() {
                        dtd.reject()
                    }
                });
                return dtd.promise()
            }
        };
        module.exports = switchMod
    }
    , {
        "../../../../../api/apiLib/http/httpV2.js": 2,
        "../../../../../api/apiLib/http/urlParam.js": 3
    }],
    37: [function(require, module, exports) {
        var chkLevel = {
            init: function() {
                var vipDegree = $.Cookie.get("VipDegree")
                  , newLevelObj = {
                    "D1": "\u94f6\u5361",
                    "D2": "\u91d1\u5361",
                    "D3": "\u767d\u91d1\u5361"
                };
                if (vipDegree && newLevelObj[vipDegree]) {
                    var $link = $("<a href='//iclub.vip.com' target='_blank' class='member-level member-level-" + vipDegree + "'></a>").attr("title", "\u7b49\u7ea7\uff1a" + newLevelObj[vipDegree] + "\u4f1a\u5458");
                    $("#J_welcome_text").append($link)
                }
            }
        };
        module.exports = chkLevel
    }
    , {}],
    38: [function(require, module, exports) {
        var Http = require("../../../../../../../api/apiLib/http/httpV2.js");
        module.exports = {
            load: function(containerId, config, customEvent) {
                var data = $.extend({
                    type: "header",
                    jq: 0,
                    core: 0,
                    channel: "",
                    loadga: 1,
                    loadmars: 0,
                    h_urls: "",
                    isGat: 0,
                    relevace_time: 0,
                    comscore: 0,
                    flogo: 1
                }, config);
                var event = {
                    successCallback: null,
                    completeCallback: null
                };
                var url = VIPSHOP.commonHost;
                if (customEvent != undefined)
                    $.extend(event, customEvent);
                Http({
                    url: url,
                    data: data,
                    dataType: "jsonp",
                    jsonpCallback: "VipCommonFooter",
                    timeout: 8E3,
                    cache: true,
                    successCallback: function(innerHTML) {
                        $("#" + containerId).append(innerHTML);
                        event.successCallback != null && event.successCallback()
                    },
                    completeCallback: function() {
                        event.completeCallback != null && event.completeCallback()
                    }
                })
            }
        }
    }
    , {
        "../../../../../../../api/apiLib/http/httpV2.js": 2
    }],
    39: [function(require, module, exports) {
        var CommonPop = require("../Pop/CommonPop");
        var pop = new CommonPop({
            tmplId: "J_callback_util_pop_tmpl",
            popConfig: {
                zIndex: 103,
                custom: true,
                elStyle: ""
            }
        });
        module.exports = {
            filter: function(codeFieldName, marsPrefix, successCallback) {
                return function(rtnData) {
                    var ts = (new Date).getTime();
                    var that = this;
                    var commData = {
                        btnUrl: "//order.vip.com/order/orderlist?_r=" + ts,
                        btnName: "\u67e5\u770b\u8ba2\u5355",
                        marsJump: marsPrefix + "_error" + rtnData[codeFieldName] + "_jump",
                        marsClose: marsPrefix + "_error_close"
                    };
                    if (!isNaN(rtnData[codeFieldName])) {
                        rtnData[codeFieldName] = parseInt(rtnData[codeFieldName], 10);
                        switch (rtnData[codeFieldName]) {
                        case -1:
                            VIPSHOP.login.init({
                                loginEvent: function() {
                                    location.reload()
                                }
                            });
                            break;
                        case -3:
                            pop.open($.extend(commData, {
                                msg: "\u60a8\u7684\u8ba2\u5355\u5df2\u652f\u4ed8\uff0c\u8bf7\u5230\u8ba2\u5355\u7ba1\u7406\u67e5\u770b\u3002"
                            }));
                            break;
                        case -2:
                        case -4:
                        case -5:
                            pop.open($.extend(commData, {
                                msg: "\u8ba2\u5355\u72b6\u6001\u5df2\u66f4\u6539\uff0c\u8bf7\u5230\u8ba2\u5355\u7ba1\u7406\u67e5\u770b\u3002"
                            }));
                            break;
                        case -6:
                            pop.open($.extend(commData, {
                                msg: "\u8ba2\u5355\u975e\u5f53\u524d\u7528\u6237\u6240\u6709\uff0c\u8bf7\u5230\u8ba2\u5355\u7ba1\u7406\u67e5\u770b\u3002"
                            }));
                            break
                        }
                    }
                    successCallback && successCallback.apply(that, arguments)
                }
            },
            pop: function(marsPrefix, btnEName, btnCName, msg, jumpUrl) {
                var commData = {
                    btnUrl: jumpUrl,
                    btnName: btnCName,
                    msg: msg,
                    marsJump: marsPrefix + "_error" + btnEName + "_jump",
                    marsClose: marsPrefix + "_error_close"
                };
                pop.open(commData)
            }
        }
    }
    , {
        "../Pop/CommonPop": 48
    }],
    40: [function(require, module, exports) {
        var CommonPop = require("../../ui/modules/CommonPop");
        var pop = new CommonPop({
            tmplId: "J_callback_util_pop_tmpl",
            popConfig: {
                zIndex: 103,
                size: "small",
                elStyle: "callback-modal"
            }
        });
        module.exports = {
            filter: function(codeFieldName, marsPrefix, successCallback) {
                return function(rtnData) {
                    var ts = (new Date).getTime();
                    var that = this;
                    var commData = {
                        btnUrl: "//order.vip.com/order/orderlist?_r=" + ts,
                        btnName: "\u67e5\u770b\u8ba2\u5355",
                        marsJump: marsPrefix + "_error" + rtnData[codeFieldName] + "_jump",
                        marsClose: marsPrefix + "_error_close"
                    };
                    if (!isNaN(rtnData[codeFieldName])) {
                        rtnData[codeFieldName] = parseInt(rtnData[codeFieldName], 10);
                        switch (rtnData[codeFieldName]) {
                        case -1:
                            VIPSHOP.login.init({
                                loginEvent: function() {
                                    location.reload()
                                }
                            });
                            break;
                        case -3:
                            pop.open($.extend(commData, {
                                msg: "\u60a8\u7684\u8ba2\u5355\u5df2\u652f\u4ed8\uff0c\u8bf7\u5230\u8ba2\u5355\u7ba1\u7406\u67e5\u770b\u3002"
                            }));
                            break;
                        case -2:
                        case -4:
                        case -5:
                            pop.open($.extend(commData, {
                                msg: "\u8ba2\u5355\u72b6\u6001\u5df2\u66f4\u6539\uff0c\u8bf7\u5230\u8ba2\u5355\u7ba1\u7406\u67e5\u770b\u3002"
                            }));
                            break;
                        case -6:
                            pop.open($.extend(commData, {
                                msg: "\u8ba2\u5355\u975e\u5f53\u524d\u7528\u6237\u6240\u6709\uff0c\u8bf7\u5230\u8ba2\u5355\u7ba1\u7406\u67e5\u770b\u3002"
                            }));
                            break;
                        default:
                            break
                        }
                    }
                    successCallback && successCallback.apply(that, arguments)
                }
            },
            pop: function(marsPrefix, btnEName, btnCName, msg, jumpUrl) {
                var commData = {
                    btnUrl: jumpUrl,
                    btnName: btnCName,
                    msg: msg,
                    marsJump: marsPrefix + "_error" + btnEName + "_jump",
                    marsClose: marsPrefix + "_error_close"
                };
                pop.open(commData)
            }
        }
    }
    , {
        "../../ui/modules/CommonPop": 63
    }],
    41: [function(require, module, exports) {
        (function() {
            function fn_onlineService() {
                var openner = null;
                var chatUrl = "http://400.vip.com/WebChat/chat/vchatWeb/webchat_vip.html?vendorid=10000&cih_acs_qs_flag=0&platform=pc";
                try {
                    openner = window.open(chatUrl, "chatbox143639", "toolbar=0,scrollbars=0,location=0,menubar=0,resizable=1,width=900,height=720");
                    return openner
                } catch (e) {}
            }
            module.exports = fn_onlineService
        }
        )()
    }
    , {}],
    42: [function(require, module, exports) {
        var VipUI = require("../ui");
        module.exports = {
            addWhileTrue: function(jqObj, trueCondition, className) {
                if (trueCondition)
                    jqObj.addClass(className);
                else
                    jqObj.removeClass(className)
            },
            switchTooltips: function(jqToolTips, trueCondition) {
                if (trueCondition)
                    VipUI.Tooltips.open(jqToolTips);
                else
                    VipUI.Tooltips.close(jqToolTips)
            },
            switchButtonLoading: function(jqBtn, trueCondition, CustomBtnClsInst) {
                if (trueCondition)
                    (CustomBtnClsInst || VipUI.Button).loading(jqBtn);
                else
                    (CustomBtnClsInst || VipUI.Button).reset(jqBtn)
            },
            switchButtonDisable: function(jqBtn, trueCondition, CustomBtnClsInst) {
                if (trueCondition)
                    (CustomBtnClsInst || VipUI.Button).disable(jqBtn);
                else
                    (CustomBtnClsInst || VipUI.Button).reset(jqBtn)
            }
        }
    }
    , {
        "../ui": 60
    }],
    43: [function(require, module, exports) {
        var inf = {
            init: function(opt) {
                var set = {
                    initMod: ["share", "mars"],
                    share: {
                        init: true,
                        name: "share_plugin",
                        url: "//share.vip.com/themes/default/static/widget/assets/js/dest/app/share/share.js"
                    },
                    mars: {
                        init: true,
                        name: "tansuohao",
                        url: "//3rd.vipstatic.com/mars/mars.js"
                    }
                };
                $.extend(set, opt);
                $(set.initMod).each(function(i) {
                    var modKey = set.initMod[i];
                    $.Loader.advScript({
                        name: set[modKey].name,
                        url: set[modKey].url
                    }, {
                        name: set[modKey].name + "Def",
                        def: function() {
                            var modKey = set.initMod[i];
                            $.Listeners.pub("inf." + set[modKey].name).success({
                                name: set[modKey].name
                            })
                        },
                        requires: [set[modKey].name]
                    })
                })
            }
        };
        module.exports = inf
    }
    , {}],
    44: [function(require, module, exports) {
        var CommonPop = require("../ui/modules/CommonPop");
        var nsArea = require("../../../bo/address/nsArea.js");
        var nsCrossPop = {
            event: {
                pub: {},
                sub: {
                    setWarehouseEnd: "set.warehouse.end"
                }
            },
            dataConfig: {
                marsFlag: 1,
                hrefHost: "",
                closeBtnMarsSead: "",
                marsOkMarsSead: "",
                popMars: ""
            },
            pop: null,
            initCookieVal: null,
            myInterval: null,
            init: function(marsPrefix, dataConfig) {
                var that = this;
                $.extend(that.dataConfig, dataConfig);
                that.initCookieVal = nsArea.getArea().areaId;
                var closeBtnMarsSead = that.dataConfig.marsFlag ? "checkout_crossnoticex_cart_btn_fdc" : that.dataConfig.closeBtnMarsSead;
                that.pop = new CommonPop({
                    tmplId: "J_pop_change_channel",
                    popConfig: {
                        size: "medium",
                        custom: false,
                        customStyle: false,
                        autoResize: false,
                        elStyle: "switch-location-modal",
                        closeBtnAttr: {
                            mars_sead: closeBtnMarsSead
                        }
                    },
                    onOk: function() {
                        location.href = that.dataConfig.marsFlag ? VIPSHOP.cartHost : that.dataConfig.hrefHost
                    }
                });
                $.Listeners.sub(that.event.sub.setWarehouseEnd).onsuccess(function(data) {
                    clearInterval(that.myInterval);
                    that.initCookieVal = nsArea.getArea().areaId;
                    that.startInterval(marsPrefix)
                });
                that.startInterval(marsPrefix)
            },
            startInterval: function(marsPrefix) {
                var that = this;
                var marsOk = that.dataConfig.marsFlag ? marsPrefix + "_change_channel" : that.dataConfig.marsOkMarsSead;
                var popMars = that.dataConfig.marsFlag ? "checkout_crossnotice_cart_pop_fdc" : that.dataConfig.popMars;
                that.myInterval = setInterval(function() {
                    var currCookieVal = nsArea.getArea().areaId;
                    if (currCookieVal != that.initCookieVal) {
                        clearInterval(that.myInterval);
                        that.pop.open({
                            marsOk: marsOk
                        });
                        window.Mar && Mar.Seed.request("crossPop", "click", popMars)
                    }
                }, 2E3)
            }
        };
        module.exports = nsCrossPop
    }
    , {
        "../../../bo/address/nsArea.js": 17,
        "../ui/modules/CommonPop": 63
    }],
    45: [function(require, module, exports) {
        var Ue = require("../../../bo/te/ue");
        var OnlineService = require("../../../plugins/modules/OrderUtil/OnlineService.js");
        var Pin = require("../Pin/Pin");
        var nsUE = {
            feedback_pop: null,
            feedbackWrap: null,
            $container: $("#J_ue_container"),
            init: function() {
                var that = this;
                $("body").on("click", ".J_online_service", OnlineService);
                Ue.get(13);
                $.Listeners.sub("get.ue.success").onsuccess(function(data) {
                    if (data.id == "UE13") {
                        that.ueSurvey(data.data);
                        that.updateUI()
                    }
                });
                $.Listeners.sub("get.ue.fail").onsuccess(function(data) {
                    if (data.id == "UE13")
                        that.updateUI()
                })
            },
            updateUI: function() {
                var that = this;
                that.uePin = new Pin({
                    $el: that.$container,
                    containerSelector: ".J_ue_position_container",
                    positonY: 120
                })
            },
            ueSurvey: function(data) {
                if (data && (data.items.length > 0 && !VIPSHOP.Detect.isIE6)) {
                    var data = data.items[0];
                    var blank = data.blank == 1 ? "_blank" : "";
                    var $questionnaire = $(".J_questionnaire");
                    $questionnaire.attr({
                        target: blank,
                        href: data.link,
                        title: data.text
                    });
                    $questionnaire.removeClass("f-hide").removeClass("J_fake_a")
                }
                return this
            }
        };
        module.exports = nsUE
    }
    , {
        "../../../bo/te/ue": 24,
        "../../../plugins/modules/OrderUtil/OnlineService.js": 41,
        "../Pin/Pin": 46
    }],
    46: [function(require, module, exports) {
        var Pin = function(customConfig) {
            this._init(customConfig)
        };
        $.extend(Pin.prototype, {
            defaultConfig: {
                $el: null,
                containerSelector: null,
                positonYType: "bottom",
                positonY: 0,
                activeClass: "pin-floats"
            },
            _init: function(customConfig) {
                var that = this
                  , $window = $(window)
                  , replacementHTML = "";
                this.options = $.extend({}, this.defaultConfig, customConfig);
                that.winHeight = $window.height();
                if (!VIPSHOP.Detect.isIE6) {
                    $window.scroll(function() {
                        that.onScroll(that)
                    });
                    $window.resize(function() {
                        that.winHeight = $window.height();
                        that.onScroll(that)
                    });
                    that.options.$el.closest(that.options.containerSelector).resize(function() {
                        that.onScroll(that)
                    });
                    $window.load(function() {
                        that.onScroll(that)
                    })
                }
            },
            onScroll: function(that) {
                var scrollY = $(window).scrollTop() + that.winHeight;
                var $el = that.options.$el;
                var $container = that.options.containerSelector != null ? $(that.options.containerSelector) : $(document.body);
                var containerOffset = $container.offset();
                var to = containerOffset.top + $container.height() + that.options.positonY;
                var maxTop = 0;
                if (scrollY >= to) {
                    if ($el.hasClass(that.options.activeClass)) {
                        $el.removeClass(that.options.activeClass);
                        switch (that.options.positonYType) {
                        case "bottom":
                            maxTop = containerOffset.top + $container.height() - $el.outerHeight();
                            break;
                        case "top":
                            maxTop = that.options.positonY;
                            $el.css({
                                top: maxTop + "px",
                                bottom: "auto",
                                position: "absolute"
                            });
                            break
                        }
                    }
                } else if (!$el.hasClass(that.options.activeClass))
                    $el.addClass(that.options.activeClass)
            }
        });
        module.exports = Pin
    }
    , {}],
    47: [function(require, module, exports) {
        var Placeholder = function(customConfig) {
            this._init(customConfig)
        };
        $.extend(Placeholder.prototype, {
            supportHolder: "placeholder"in document.createElement("input"),
            defaultConfig: {
                jqHolders: null,
                holderClass: "u-placeholder"
            },
            _init: function(customConfig) {
                this.config = $.extend({}, this.defaultConfig, customConfig);
                if (!this.supportHolder) {
                    if (!this.config.jqHolders)
                        this.config.jqHolders = $("[placeholder]");
                    this._bindEvent()
                }
            },
            _bindEvent: function() {
                var that = this;
                this.config.jqHolders.on("focus", function(e) {
                    that.removeHolderStyle($(this))
                }).on("blur", function(e) {
                    that.addHolderStyle($(this))
                });
                this.addAllHolder()
            },
            addHolderStyle: function(jqElement) {
                if (!this.supportHolder && jqElement.val().length == 0) {
                    jqElement.val(jqElement.attr("placeholder"));
                    jqElement.addClass(this.config.holderClass)
                }
            },
            removeHolderStyle: function(jqElement) {
                if (!this.supportHolder && jqElement.val() == jqElement.attr("placeholder")) {
                    jqElement.val("");
                    jqElement.removeClass(this.config.holderClass)
                }
            },
            removeAllHolder: function() {
                if (!this.supportHolder) {
                    var that = this;
                    this.config.jqHolders.each(function() {
                        var jqThis = $(this);
                        if (jqThis.val() == jqThis.attr("placeholder"))
                            that.removeHolderStyle(jqThis)
                    })
                }
            },
            addAllHolder: function() {
                if (!this.supportHolder) {
                    var that = this;
                    this.config.jqHolders.each(function() {
                        var jqThis = $(this);
                        if (jqThis.val().length == 0)
                            that.addHolderStyle(jqThis)
                    })
                }
            }
        });
        module.exports = Placeholder
    }
    , {}],
    48: [function(require, module, exports) {
        var template = require("../template");
        var CommonPop = function(customConfig) {
            this._init(customConfig)
        };
        $.extend(CommonPop.prototype, {
            defaultConfig: {
                tmplId: "",
                okClass: "J_pop_ok",
                cancelClass: "J_pop_cancel",
                closeClass: "J_pop_close",
                onOpen: null,
                onFirstOpen: null,
                onOk: null,
                onClose: null,
                popConfig: {
                    content: "",
                    model: true,
                    elStyle: "tips",
                    effect: {
                        effect: "slide",
                        duration: 200
                    },
                    opacity: 0.6,
                    zIndex: 100,
                    autoResize: true
                }
            },
            _init: function(customConfig) {
                var that = this;
                this.config = $.extend(true, {}, this.defaultConfig, customConfig);
                this.openYet = false;
                this.isOpening = false;
                this.tmplId = this.config.tmplId;
                this.pop = new $.Dialog($.extend(true, {
                    showEvent: function() {
                        setTimeout(function() {
                            if (!that.openYet) {
                                that.config.onFirstOpen && that.config.onFirstOpen.call(that);
                                that._bindEvent();
                                that.openYet = true
                            }
                            that.config.onOpen && that.config.onOpen.call(that)
                        }, 0)
                    },
                    custom: true,
                    customStyle: true
                }, this.config.popConfig));
                this.popContainer = this.pop.buffObj.dialog
            },
            _bindEvent: function() {
                var that = this;
                $.each(["ok", "cancel", "close"], function(i, name) {
                    that.popContainer.on("click", "." + that.config[name + "Class"], function(e) {
                        var jqThis = $(e.target);
                        var href = jqThis.attr("href");
                        if (!href || (href.indexOf("javascript:void") == 0 || href.indexOf("###") == 0))
                            e.preventDefault();
                        var cbFun = that.config["on" + name.substr(0, 1).toUpperCase() + name.substr(1, name.length)];
                        if ($.isFunction(cbFun))
                            cbFun.call(that, function() {
                                that.close()
                            });
                        else
                            that.close()
                    })
                })
            },
            open: function(data) {
                this.isOpening = true;
                this.pop.open().content(template(this.tmplId, data))
            },
            close: function(isQuiet) {
                var that = this;
                if (!isQuiet && this.config.onClose)
                    this.config.onClose.call(this, function() {
                        that.isOpening = false;
                        that.pop.close()
                    });
                else {
                    this.isOpening = false;
                    this.pop.close()
                }
            }
        });
        module.exports = CommonPop
    }
    , {
        "../template": 58
    }],
    49: [function(require, module, exports) {
        var scrollMod = require("./ScrollListener.js");
        (function($) {
            var LazyDomHelper = function(param) {
                return this.init(param)
            };
            $.extend(LazyDomHelper.prototype, {
                config: {
                    $dom: null,
                    preHeight: 200,
                    loadingFn: null
                },
                eventId: null,
                loading: false,
                init: function(opt) {
                    var self = this;
                    this.config = $.extend({}, this.config, opt);
                    this.$window = $(window);
                    if (this.$window.height() > this.config.$dom.offset().top - this.config.preHeight)
                        this.config.loadingFn(self);
                    else
                        this.addEvent()
                },
                destroy: function() {
                    this.removeEvent();
                    this.eventId = this.loading = this.config.$dom = this.$window = null
                },
                addEvent: function() {
                    var self = this;
                    self.eventId = scrollMod.add(function(data) {
                        self.determine(data.y, data.down)
                    })
                },
                removeEvent: function() {
                    scrollMod.remove(this.eventId)
                },
                determine: function(y, down) {
                    var self = this;
                    if (!this.loading && this.$window.height() + y > this.config.$dom.offset().top - this.config.preHeight)
                        this.config.loadingFn(self)
                }
            });
            module.exports = LazyDomHelper
        }
        )(jQuery)
    }
    , {
        "./ScrollListener.js": 50
    }],
    50: [function(require, module, exports) {
        var asynFire = require("./asynFire.js");
        var idPf = Math.random().toString(36).substr(2).substr(0, 4) + "_"
          , guid = 1;
        var ScrollListener = {
            nX: 0,
            nY: 0,
            change: false,
            wW: 0,
            interval: 0,
            resizeTimeout: 0,
            eventId: ".scrollListener",
            inited: false,
            lazy: 300,
            list: {},
            event: {
                sub: {
                    scrollLockEvent: "index.click.scrollLock"
                }
            },
            _bindEvent: function() {
                var _this = this;
                $.Listeners.sub(_this.event.sub.scrollLockEvent).onsuccess(function() {
                    $(window).off(_this.eventId);
                    $(window).on("scroll" + _this.eventId, function(e) {
                        _this.change = true
                    })
                })
            },
            add: function(callback) {
                var id, $window = $(window);
                if ($.isFunction(callback)) {
                    if (!this.inited)
                        this._init();
                    id = idPf + guid++;
                    this.list[id] = callback;
                    asynFire(function() {
                        callback({
                            x: $window.scrollLeft(),
                            y: $window.scrollTop(),
                            right: true,
                            down: true
                        })
                    });
                    return id
                }
                return false
            },
            remove: function(id) {
                var list = this.list;
                if (list[id]) {
                    list[id] = null;
                    delete list[id];
                    return true
                }
                return false
            },
            fire: function(x, y, right, down) {
                var list = this.list, i, data = {
                    x: typeof x === "number" ? x : $(window).scrollLeft(),
                    y: typeof y === "number" ? y : $(window).scrollTop(),
                    right: typeof right === "boolean" ? right : true,
                    down: typeof down === "boolean" ? down : true
                };
                for (i in list)
                    list[i](data);
                return this
            },
            setLazy: function(time) {
                this.lazy = time;
                if (this.inited)
                    this._removeInterval()._addInterval();
                return this
            },
            _init: function() {
                if (this.inited)
                    return this;
                this._bindEvent();
                this.wW = $(window).width();
                this._addEvent()._addInterval();
                this.inited = true;
                return this
            },
            _determine: function() {
                var $window, oX, oY, nX, nY;
                if (this.change) {
                    this.change = false;
                    $window = $(window);
                    oX = this.nX;
                    oY = this.nY;
                    nX = $window.scrollLeft();
                    nY = $window.scrollTop();
                    this.fire(nX, nY, nX > oX, nY > oY);
                    this.nX = nX;
                    this.nY = nY
                }
            },
            _resizeHandle: function() {
                var self = this;
                clearTimeout(self.resizeTimeout);
                self.resizeTimeout = setTimeout(function() {
                    var $window = $(window)
                      , wW = self.wW
                      , nWw = $window.width()
                      , nX = $window.scrollLeft()
                      , nY = $window.scrollTop();
                    self.nX = nX;
                    self.nY = nY;
                    self.wW = nWw;
                    self.fire(nX, nY, nWw > wW, nWw > wW)
                }, 200)
            },
            _addEvent: function() {
                var self = this;
                $(window).on("scroll" + self.eventId, function(e) {
                    self.change = true
                }).on("resize" + self.eventId, function(e) {
                    self._resizeHandle()
                });
                return this
            },
            _removeEvent: function() {
                $(window).off(this.eventId);
                return this
            },
            _addInterval: function() {
                var self = this;
                self.interval = setInterval(function() {
                    self._determine()
                }, self.lazy);
                return this
            },
            _removeInterval: function() {
                clearInterval(this.interval);
                this.interval = null;
                return this
            },
            destroy: function() {
                this._removeEvent()._removeInterval();
                this.inited = false;
                this.list = {};
                return this
            }
        };
        module.exports = ScrollListener
    }
    , {
        "./asynFire.js": 51
    }],
    51: [function(require, module, exports) {
        function isNativeFunc(func) {
            return typeof func === "function" && /^[^{]+\{\s*\[native \w/.test(func)
        }
        var _window = window
          , frame = _window.requestAnimationFrame || (_window.webkitRequestAnimationFrame || (_window.mozRequestAnimationFrame || (_window.oRequestAnimationFrame || _window.msRequestAnimationFrame)))
          , supAsynImg = true;
        _window = null;
        function asynByImg(callback) {
            var img = new Image;
            img.onload = img.onerror = img.onreadystatechange = function() {
                img = img.onload = img.onerror = img.onreadystatechange = null;
                callback()
            }
            ;
            img.src = "data:image/png,"
        }
        asynByImg(function() {
            supAsynImg = false
        });
        var asynFire = isNativeFunc(window.Promise) && function() {
            var promise = Promise.resolve({
                then: function(callback) {
                    callback()
                }
            });
            return function(callback) {
                promise.then(function() {
                    callback()
                })
            }
        }() || (isNativeFunc(frame) && function(callback) {
            frame(callback)
        }
        || (supAsynImg && asynByImg || function() {
            var _document = document
              , _body = _document.body
              , _src = "data:text/javascript,"
              , queue = [];
            return function(callback) {
                var script = _document.createElement("script");
                script.src = _src;
                queue[queue.length] = callback;
                script.onload = script.onerror = script.onreadystatechange = function() {
                    script.onload = script.onerror = script.onreadystatechange = null;
                    _body.removeChild(script);
                    script = null;
                    queue.shift()()
                }
                ;
                _body.appendChild(script)
            }
        }()));
        if (asynFire !== asynByImg)
            asynByImg = null;
        module.exports = asynFire
    }
    , {}],
    52: [function(require, module, exports) {
        (function($) {
            function safe_add(x, y) {
                var lsw = (x & 65535) + (y & 65535)
                  , msw = (x >> 16) + (y >> 16) + (lsw >> 16);
                return msw << 16 | lsw & 65535
            }
            function bit_rol(num, cnt) {
                return num << cnt | num >>> 32 - cnt
            }
            function md5_cmn(q, a, b, x, s, t) {
                return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
            }
            function md5_ff(a, b, c, d, x, s, t) {
                return md5_cmn(b & c | ~b & d, a, b, x, s, t)
            }
            function md5_gg(a, b, c, d, x, s, t) {
                return md5_cmn(b & d | c & ~d, a, b, x, s, t)
            }
            function md5_hh(a, b, c, d, x, s, t) {
                return md5_cmn(b ^ c ^ d, a, b, x, s, t)
            }
            function md5_ii(a, b, c, d, x, s, t) {
                return md5_cmn(c ^ (b | ~d), a, b, x, s, t)
            }
            function binl_md5(x, len) {
                x[len >> 5] |= 128 << len % 32;
                x[(len + 64 >>> 9 << 4) + 14] = len;
                var i, olda, oldb, oldc, oldd, a = 1732584193, b = -271733879, c = -1732584194, d = 271733878;
                for (i = 0; i < x.length; i += 16) {
                    olda = a;
                    oldb = b;
                    oldc = c;
                    oldd = d;
                    a = md5_ff(a, b, c, d, x[i], 7, -680876936);
                    d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
                    c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
                    b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
                    a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
                    d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
                    c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
                    b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
                    a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
                    d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
                    c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
                    b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
                    a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
                    d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
                    c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
                    b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
                    a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
                    d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
                    c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
                    b = md5_gg(b, c, d, a, x[i], 20, -373897302);
                    a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
                    d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
                    c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
                    b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
                    a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
                    d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
                    c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
                    b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
                    a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
                    d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
                    c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
                    b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
                    a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
                    d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
                    c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
                    b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
                    a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
                    d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
                    c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
                    b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
                    a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
                    d = md5_hh(d, a, b, c, x[i], 11, -358537222);
                    c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
                    b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
                    a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
                    d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
                    c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
                    b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
                    a = md5_ii(a, b, c, d, x[i], 6, -198630844);
                    d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
                    c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
                    b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
                    a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
                    d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
                    c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
                    b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
                    a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
                    d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
                    c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
                    b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
                    a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
                    d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
                    c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
                    b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
                    a = safe_add(a, olda);
                    b = safe_add(b, oldb);
                    c = safe_add(c, oldc);
                    d = safe_add(d, oldd)
                }
                return [a, b, c, d]
            }
            function binl2rstr(input) {
                var i, output = "";
                for (i = 0; i < input.length * 32; i += 8)
                    output += String.fromCharCode(input[i >> 5] >>> i % 32 & 255);
                return output
            }
            function rstr2binl(input) {
                var i, output = [];
                output[(input.length >> 2) - 1] = undefined;
                for (i = 0; i < output.length; i += 1)
                    output[i] = 0;
                for (i = 0; i < input.length * 8; i += 8)
                    output[i >> 5] |= (input.charCodeAt(i / 8) & 255) << i % 32;
                return output
            }
            function rstr_md5(s) {
                return binl2rstr(binl_md5(rstr2binl(s), s.length * 8))
            }
            function rstr_hmac_md5(key, data) {
                var i, bkey = rstr2binl(key), ipad = [], opad = [], hash;
                ipad[15] = opad[15] = undefined;
                if (bkey.length > 16)
                    bkey = binl_md5(bkey, key.length * 8);
                for (i = 0; i < 16; i += 1) {
                    ipad[i] = bkey[i] ^ 909522486;
                    opad[i] = bkey[i] ^ 1549556828
                }
                hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
                return binl2rstr(binl_md5(opad.concat(hash), 512 + 128))
            }
            function rstr2hex(input) {
                var hex_tab = "0123456789abcdef", output = "", x, i;
                for (i = 0; i < input.length; i += 1) {
                    x = input.charCodeAt(i);
                    output += hex_tab.charAt(x >>> 4 & 15) + hex_tab.charAt(x & 15)
                }
                return output
            }
            function str2rstr_utf8(input) {
                return unescape(encodeURIComponent(input))
            }
            function raw_md5(s) {
                return rstr_md5(str2rstr_utf8(s))
            }
            function hex_md5(s) {
                return rstr2hex(raw_md5(s))
            }
            function raw_hmac_md5(k, d) {
                return rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d))
            }
            function hex_hmac_md5(k, d) {
                return rstr2hex(raw_hmac_md5(k, d))
            }
            function md5(string, key, raw) {
                if (!key) {
                    if (!raw)
                        return hex_md5(string);
                    return raw_md5(string)
                }
                if (!raw)
                    return hex_hmac_md5(key, string);
                return raw_hmac_md5(key, string)
            }
            if (typeof define === "function" && define.amd)
                define(function() {
                    return md5
                });
            else
                $.md5 = md5;
            module.exports = md5
        }
        )(this)
    }
    , {}],
    53: [function(require, module, exports) {
        module.exports = {
            init: function() {
                $("body").on("click", ".J_fake_a", function(e) {
                    e.preventDefault()
                })
            }
        }
    }
    , {}],
    54: [function(require, module, exports) {
        var Simulate = {
            config: {
                radioModule: ".m-radio",
                radioClass: "z-radio-checked",
                checkboxModule: ".m-checkbox,.J_bar_checkbox",
                checkboxClass: "z-checkbox-checked",
                disabledRadioCls: "z-radio-disabled",
                disabledCheckboxCls: "z-checkbox-disabled",
                checkCallback: function() {}
            },
            init: function(customConfig) {
                $.extend(this.config, customConfig);
                var that = this;
                $(document).on("click", that.config.radioModule, function(e) {
                    var jqThis = $(e.target).closest(that.config.radioModule).find("input");
                    if (jqThis.attr("disabled") != "disabled")
                        Simulate.setClass(jqThis, "radio")
                }).on("click", that.config.checkboxModule, function(e) {
                    var jqThis = $(e.target).closest(that.config.checkboxModule).find("input");
                    if (jqThis.attr("disabled") != "disabled")
                        Simulate.setClass(jqThis, "checkbox")
                });
                that.refreshUI()
            },
            updateUI: function(jqItems, isChecked, isDisabled) {
                jqItems.each(function() {
                    var jqThis = $(this);
                    var name = jqThis.attr("type");
                    jqThis.prop("checked", isChecked);
                    if (isDisabled)
                        jqThis.attr("disabled", "disabled");
                    else
                        jqThis.removeAttr("disabled");
                    Simulate.setClass(jqThis, name)
                })
            },
            refreshUI: function() {
                $.each(["checkbox", "radio"], function(index, name) {
                    var selectorName = Simulate.config[name + "Module"].split(",");
                    for (var i = 0, l = selectorName.length; i < l; i++)
                        $(selectorName[i] + ' input:not([simulate="done"])').each(function() {
                            var jqThis = $(this);
                            Simulate.setClass(jqThis, name);
                            jqThis.attr("simulate", "done")
                        })
                })
            },
            setClass: function(jqThis, name) {
                var that = this;
                var selectorName = that.config[name + "Module"];
                var statusName = that.config[name + "Class"];
                var disabledCls = "";
                if (name == "radio")
                    disabledCls = that.config.disabledRadioCls;
                else if (name == "checkbox")
                    disabledCls = that.config.disabledCheckboxCls;
                if (jqThis.attr("disabled") == "disabled")
                    jqThis.parents(selectorName + ":first").addClass(disabledCls);
                else
                    jqThis.parents(selectorName + ":first").removeClass(disabledCls);
                if (jqThis.prop("checked")) {
                    if (name == "radio")
                        $("input[type=radio][name=" + jqThis.attr("name") + "]").each(function() {
                            $(this).parents(selectorName + ":first").removeClass(statusName)
                        });
                    jqThis.parents(selectorName + ":first").addClass(statusName);
                    that.config.checkCallback(jqThis)
                } else {
                    jqThis.parents(selectorName + ":first").removeClass(statusName);
                    that.config.checkCallback(jqThis)
                }
            }
        };
        module.exports = Simulate
    }
    , {}],
    55: [function(require, module, exports) {
        var Statistics = {
            event: {
                pub: {},
                sub: {
                    callMarSeed: "call.mar.seed"
                }
            },
            init: function() {
                var that = this;
                $.Listeners.sub(that.event.sub.callMarSeed).onsuccess(function(data) {
                    that.callMarSeed(data.mars_sead, data.data_mars)
                })
            },
            callMarSeed: function(mars_sead, data_mars) {
                if (typeof Mar == "function")
                    Mar.Seed.request("a", "click", mars_sead, $.stringifyJSON(data_mars))
            }
        };
        module.exports = Statistics
    }
    , {}],
    56: [function(require, module, exports) {
        var ScrollListener = require("../Scroll/ScrollListener.js");
        var fixedFloatTitle = {
            eventId: {},
            rNav1: null,
            UI: {
                status: {
                    show: "sd-sortfloa-show"
                },
                topNav: $("#J_channel_tips"),
                whereToShowNavWrap: null
            },
            events: {
                sub: {
                    getOptionsConfig: "topNav.getOptions.config"
                }
            },
            init: function() {
                var _this = this;
                $.Listeners.sub(_this.events.sub.getOptionsConfig).onsuccess(function(options) {
                    _this.UI = $.extend(_this.UI, options);
                    if (_this.UI.whereToShowNavWrap.length > 0)
                        _this.addEvent("topNav")
                })
            },
            show: function() {
                this.UI.topNav.addClass(this.UI.status.show)
            },
            hide: function() {
                this.UI.topNav.removeClass(this.UI.status.show)
            },
            addEvent: function(name) {
                var self = this;
                self.eventId[name] = ScrollListener.add(function(data) {
                    self.determine(data.y, data.down)
                })
            },
            removeEvent: function() {
                ScrollListener.remove(this.eventId)
            },
            determine: function(y, down) {
                var self = this
                  , $Jsortbar = this.UI.whereToShowNavWrap
                  , wrqHeight = $Jsortbar.height()
                  , top = $Jsortbar.offset().top + wrqHeight;
                if (y > top)
                    self.show();
                else
                    self.hide()
            }
        };
        module.exports = fixedFloatTitle
    }
    , {
        "../Scroll/ScrollListener.js": 50
    }],
    57: [function(require, module, exports) {
        var addHost = function(url) {
            var aryImgHost = ["//a.vpimg2.com", "//a.vpimg3.com", "//a.vpimg4.com"];
            if (url) {
                var pattern = /^http:\/\/|^https:\/\/|^\/\//g;
                if (!pattern.test(url)) {
                    var prefix = "";
                    if (url.substring(0, 1) != "/")
                        prefix = "/";
                    url = prefix + url;
                    var sum = 0;
                    for (i = 0; i < url.length; i++)
                        sum += url.substr(i, 1).charCodeAt();
                    var imgIndex = sum % aryImgHost.length;
                    url = aryImgHost[imgIndex] + "/upload/merchandise" + url
                }
                var reg = new RegExp("^http:|^https:","g");
                url = url.replace(reg, "")
            }
            return url
        };
        module.exports = addHost
    }
    , {}],
    58: [function(require, module, exports) {
        var template = require("./lib/template");
        template.helper("cutter", function(txt, length) {
            if (txt.length > length)
                return txt.substr(0, length - 1) + "...";
            else
                return txt
        });
        template.helper("delProtocolHeader", function(str) {
            str = str.replace(/^http:|https:/i, "");
            return str
        });
        template.helper("descnFormat", function(str) {
            str = str.replace(/([0-9.]+[\u5143\u6298\u4ef6]?)/g, function() {
                return '<span class="u-price">' + arguments[1] + "</span>"
            });
            return str
        });
        template.helper("formatNumber", function(str) {
            str = str.replace(/(0-9.)/g, function() {
                return '<span class="u-price">' + arguments[1] + "</span>"
            });
            return str
        });
        template.helper("formatNumber", function(str) {
            str = str.replace(/(0-9.)/g, function() {
                return '<span class="u-price">' + arguments[1] + "</span>"
            });
            return str
        });
        template.helper("encrypt", function(str, type) {
            var re = "";
            if (str != "")
                switch (type) {
                case "cardNo":
                    re = str.substr(0, 4) + "**" + str.substr(str.length - 4, 4);
                    break
                }
            return re
        });
        template.helper("buyMoreLink", function(brandStr, diff) {
            var diffStr = diff == undefined ? 0 : diff;
            var link = "";
            if (brandStr == "") {
                if (diffStr == 0)
                    diffStr = 100;
                link = "//viva.vip.com/act/templateCollage-pc?wapid=vivac_1008&diff=" + diffStr
            } else
                link = "//viva.vip.com/act/templateCollage-pc?wapid=vivac_1008&brand=" + brandStr + "&diff=" + diffStr;
            return link
        });
        module.exports = template
    }
    , {
        "./lib/template": 59
    }],
    59: [function(require, module, exports) {
        !function() {
            function a(a) {
                return a.replace(t, "").replace(u, ",").replace(v, "").replace(w, "").replace(x, "").split(/^$|,+/)
            }
            function b(a) {
                return "'" + a.replace(/('|\\)/g, "\\$1").replace(/\r/g, "\\r").replace(/\n/g, "\\n") + "'"
            }
            function c(c, d) {
                function e(a) {
                    return m += a.split(/\n/).length - 1,
                    k && (a = a.replace(/\s+/g, " ").replace(/\x3c!--.*?--\x3e/g, "")),
                    a && (a = s[1] + b(a) + s[2] + "\n"),
                    a
                }
                function f(b) {
                    var c = m;
                    if (j ? b = j(b, d) : g && (b = b.replace(/\n/g, function() {
                        return m++,
                        "$line=" + m + ";"
                    })),
                    0 === b.indexOf("=")) {
                        var e = l && !/^=[=#]/.test(b);
                        if (b = b.replace(/^=[=#]?|[\s;]*$/g, ""),
                        e) {
                            var f = b.replace(/\s*\([^\)]+\)/, "");
                            n[f] || (/^(include|print)$/.test(f) || (b = "$escape(" + b + ")"))
                        } else
                            b = "$string(" + b + ")";
                        b = s[1] + b + s[2]
                    }
                    return g && (b = "$line=" + c + ";" + b),
                    r(a(b), function(a) {
                        if (a && !p[a]) {
                            var b;
                            b = "print" === a ? u : "include" === a ? v : n[a] ? "$utils." + a : o[a] ? "$helpers." + a : "$data." + a,
                            w += a + "=" + b + ",",
                            p[a] = !0
                        }
                    }),
                    b + "\n"
                }
                var g = d.debug
                  , h = d.openTag
                  , i = d.closeTag
                  , j = d.parser
                  , k = d.compress
                  , l = d.escape
                  , m = 1
                  , p = {
                    $data: 1,
                    $filename: 1,
                    $utils: 1,
                    $helpers: 1,
                    $out: 1,
                    $line: 1
                }
                  , q = "".trim
                  , s = q ? ["$out='';", "$out+=", ";", "$out"] : ["$out=[];", "$out.push(", ");", "$out.join('')"]
                  , t = q ? "$out+=text;return $out;" : "$out.push(text);"
                  , u = "function(){var text=''.concat.apply('',arguments);" + t + "}"
                  , v = "function(filename,data){data=data||$data;var text=$utils.$include(filename,data,$filename);" + t + "}"
                  , w = "'use strict';var $utils=this,$helpers=$utils.$helpers," + (g ? "$line=0," : "")
                  , x = s[0]
                  , y = "return new String(" + s[3] + ");";
                r(c.split(h), function(a) {
                    a = a.split(i);
                    var b = a[0]
                      , c = a[1];
                    1 === a.length ? x += e(b) : (x += f(b),
                    c && (x += e(c)))
                });
                var z = w + x + y;
                g && (z = "try{" + z + "}catch(e){throw {filename:$filename,name:'Render Error',message:e.message,line:$line,source:" + b(c) + ".split(/\\n/)[$line-1].replace(/^\\s+/,'')};}");
                try {
                    var A = new Function("$data","$filename",z);
                    return A.prototype = n,
                    A
                } catch (B) {
                    throw B.temp = "function anonymous($data,$filename) {" + z + "}",
                    B;
                }
            }
            var d = function(a, b) {
                return "string" == typeof b ? q(b, {
                    filename: a
                }) : g(a, b)
            };
            d.version = "3.0.0",
            d.config = function(a, b) {
                e[a] = b
            }
            ;
            var e = d.defaults = {
                openTag: "<%",
                closeTag: "%>",
                escape: !0,
                cache: !0,
                compress: !1,
                parser: null
            }
              , f = d.cache = {};
            d.render = function(a, b) {
                return q(a, b)
            }
            ;
            var g = d.renderFile = function(a, b) {
                var c = d.get(a) || p({
                    filename: a,
                    name: "Render Error",
                    message: "Template not found"
                });
                return b ? c(b) : c
            }
            ;
            d.get = function(a) {
                var b;
                if (f[a])
                    b = f[a];
                else if ("object" == typeof document) {
                    var c = document.getElementById(a);
                    if (c) {
                        var d = (c.value || c.innerHTML).replace(/^\s*|\s*$/g, "");
                        b = q(d, {
                            filename: a
                        })
                    }
                }
                return b
            }
            ;
            var h = function(a, b) {
                return "string" != typeof a && (b = typeof a,
                "number" === b ? a += "" : a = "function" === b ? h(a.call(a)) : ""),
                a
            }
              , i = {
                "<": "&#60;",
                ">": "&#62;",
                '"': "&#34;",
                "'": "&#39;",
                "&": "&#38;"
            }
              , j = function(a) {
                return i[a]
            }
              , k = function(a) {
                return h(a).replace(/&(?![\w#]+;)|[<>"']/g, j)
            }
              , l = Array.isArray || function(a) {
                return "[object Array]" === {}.toString.call(a)
            }
              , m = function(a, b) {
                var c, d;
                if (l(a))
                    for (c = 0,
                    d = a.length; d > c; c++)
                        b.call(a, a[c], c, a);
                else
                    for (c in a)
                        b.call(a, a[c], c)
            }
              , n = d.utils = {
                $helpers: {},
                $include: g,
                $string: h,
                $escape: k,
                $each: m
            };
            d.helper = function(a, b) {
                o[a] = b
            }
            ;
            var o = d.helpers = n.$helpers;
            d.onerror = function(a) {
                var b = "Template Error\n\n";
                for (var c in a)
                    b += "<" + c + ">\n" + a[c] + "\n\n";
                "object" == typeof window["console"] && window["console"].error(b)
            }
            ;
            var p = function(a) {
                return d.onerror(a),
                function() {
                    return "{Template Error}"
                }
            }
              , q = d.compile = function(a, b) {
                function d(c) {
                    try {
                        return new i(c,h) + ""
                    } catch (d) {
                        return b.debug ? p(d)() : (b.debug = !0,
                        q(a, b)(c))
                    }
                }
                b = b || {};
                for (var g in e)
                    void 0 === b[g] && (b[g] = e[g]);
                var h = b.filename;
                try {
                    var i = c(a, b)
                } catch (j) {
                    return j.filename = h || "anonymous",
                    j.name = "Syntax Error",
                    p(j)
                }
                return d.prototype = i.prototype,
                d.toString = function() {
                    return i.toString()
                }
                ,
                h && (b.cache && (f[h] = d)),
                d
            }
              , r = n.$each
              , s = "break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined"
              , t = /\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g
              , u = /[^\w$]+/g
              , v = new RegExp(["\\b" + s.replace(/,/g, "\\b|\\b") + "\\b"].join("|"),"g")
              , w = /^\d[^,]*|,\d[^,]*/g
              , x = /^,+|,+$/g;
            e.openTag = "{{",
            e.closeTag = "}}";
            var y = function(a, b) {
                var c = b.split(":")
                  , d = c.shift()
                  , e = c.join(":") || "";
                return e && (e = ", " + e),
                "$helpers." + d + "(" + a + e + ")"
            };
            e.parser = function(a, b) {
                a = a.replace(/^\s/, "");
                var c = a.split(" ")
                  , e = c.shift()
                  , f = c.join(" ");
                switch (e) {
                case "if":
                    a = "if(" + f + "){";
                    break;
                case "else":
                    c = "if" === c.shift() ? " if(" + c.join(" ") + ")" : "",
                    a = "}else" + c + "{";
                    break;
                case "/if":
                    a = "}";
                    break;
                case "each":
                    var g = c[0] || "$data"
                      , h = c[1] || "as"
                      , i = c[2] || "$value"
                      , j = c[3] || "$index"
                      , k = i + "," + j;
                    "as" !== h && (g = "[]"),
                    a = "$each(" + g + ",function(" + k + "){";
                    break;
                case "/each":
                    a = "});";
                    break;
                case "echo":
                    a = "print(" + f + ");";
                    break;
                case "print":
                case "include":
                    a = e + "(" + c.join(",") + ");";
                    break;
                default:
                    if (-1 !== f.indexOf("|")) {
                        var l = b.escape;
                        0 === a.indexOf("#") && (a = a.substr(1),
                        l = !1);
                        for (var m = 0, n = a.split("|"), o = n.length, p = l ? "$escape" : "$string", q = p + "(" + n[m++] + ")"; o > m; m++)
                            q = y(q, n[m]);
                        a = "=#" + q
                    } else
                        a = d.helpers[e] ? "=#" + e + "(" + c.join(",") + ");" : "=" + a
                }
                return a
            }
            ,
            "undefined" != typeof exports ? module.exports = d : "function" == typeof define ? define(function() {
                return d
            }) : this.template = d
        }()
    }
    , {}],
    60: [function(require, module, exports) {
        module.exports = {
            Tooltips: require("./modules/Tooltips"),
            DropDown: require("./modules/DropDown"),
            Button: new (require("./modules/Button")),
            Checkbox: require("./modules/Checkbox")
        }
    }
    , {
        "./modules/Button": 61,
        "./modules/Checkbox": 62,
        "./modules/DropDown": 64,
        "./modules/Tooltips": 65
    }],
    61: [function(require, module, exports) {
        (function($) {
            var Button = function(param) {
                return this.init(param)
            };
            $.extend(Button.prototype, {
                config: {
                    disableClass: "ui-btn-disable",
                    loadingClass: "z-ui-btn-loading"
                },
                init: function(opt) {
                    this.config = $.extend({}, this.config, opt)
                },
                reset: function(jqBtn) {
                    var that = this;
                    jqBtn.removeClass([that.config.disableClass, that.config.loadingClass].join(" "))
                },
                loading: function(jqBtn) {
                    jqBtn.addClass(this.config.loadingClass)
                },
                disable: function(jqBtn) {
                    jqBtn.addClass(this.config.disableClass)
                },
                isLoading: function(jqBtn) {
                    return jqBtn.hasClass(this.config.loadingClass)
                },
                isDisable: function(jqBtn) {
                    return jqBtn.hasClass(this.config.disableClass) || jqBtn.hasClass(this.config.loadingClass)
                }
            });
            module.exports = Button
        }
        )(jQuery)
    }
    , {}],
    62: [function(require, module, exports) {
        var Checkbox = {
            config: {
                radioModule: ".ui-radio",
                checkboxModule: ".ui-checkbox,.J_bar_checkbox",
                disabledLabelCls: "f-not-allowed",
                checkCallback: function() {}
            },
            init: function(customConfig) {
                $.extend(this.config, customConfig)
            },
            updateUI: function(jqItems, isChecked, isDisabled) {
                var that = this;
                jqItems.each(function() {
                    var jqThis = $(this);
                    var name = jqThis.attr("type");
                    jqThis.prop("checked", isChecked);
                    if (isDisabled)
                        jqThis.attr("disabled", "disabled");
                    else
                        jqThis.removeAttr("disabled");
                    that.setClass(jqThis, name)
                })
            },
            refreshUI: function() {
                var that = this;
                $.each(["checkbox", "radio"], function(index, name) {
                    var selectorName = that.config[name + "Module"].split(",");
                    for (var i = 0, l = selectorName.length; i < l; i++)
                        $(selectorName[i] + ' input:not([simulate="done"])').each(function() {
                            var jqThis = $(this);
                            that.setClass(jqThis, name);
                            jqThis.attr("simulate", "done")
                        })
                })
            },
            setClass: function(jqThis, name) {
                var that = this;
                var id = jqThis.attr("id")
                  , jqLabel = $('label[for="' + id + '"]');
                if (id != undefined && jqLabel.size() != 0)
                    if (jqThis.attr("disabled") == "disabled")
                        jqLabel.addClass(that.config.disabledLabelCls);
                    else
                        jqLabel.removeClass(that.config.disabledLabelCls);
                if (jqThis.prop("checked"))
                    that.config.checkCallback(jqThis);
                else
                    that.config.checkCallback(jqThis)
            }
        };
        $(document).on("click.vui.checkbox.data-api", [Checkbox.config.radioModule, Checkbox.config.checkboxModule, '[data-toggle="checkbox"]'].join(" "), function(e) {
            var jqThis = $(e.target).find("input");
            if (jqThis.attr("disabled") != "disabled")
                Checkbox.setClass(jqThis)
        });
        Checkbox.refreshUI();
        module.exports = Checkbox
    }
    , {}],
    63: [function(require, module, exports) {
        var template = require("../../template");
        var CommonPop = function(customConfig) {
            this._init(customConfig)
        };
        $.extend(CommonPop.prototype, {
            defaultConfig: {
                tmplId: "",
                okClass: "J_pop_ok",
                cancelClass: "J_pop_cancel",
                closeClass: "J_pop_close",
                onOpen: null,
                onFirstOpen: null,
                onOk: null,
                onClose: null,
                popConfig: {
                    title: "",
                    content: "",
                    custom: true,
                    model: true,
                    elStyle: "",
                    opacity: 0.6,
                    zIndex: 100
                }
            },
            _init: function(customConfig) {
                var that = this;
                this.config = $.extend(true, {}, this.defaultConfig, customConfig);
                this.openYet = false;
                this.isOpening = false;
                this.tmplId = this.config.tmplId;
                var config = $.extend(true, {
                    showEvent: function() {
                        setTimeout(function() {
                            if (!that.openYet) {
                                that.config.onFirstOpen && that.config.onFirstOpen.call(that);
                                that._bindEvent();
                                that.openYet = true
                            }
                            that.config.onOpen && that.config.onOpen.call(that)
                        }, 0)
                    }
                }, this.config.popConfig);
                this.pop = new $.Dialog(config);
                this.popContainer = this.pop.buffObj.dialog
            },
            _bindEvent: function() {
                var that = this;
                $.each(["ok", "cancel", "close"], function(i, name) {
                    that.popContainer.on("click", "." + that.config[name + "Class"], function(e) {
                        var jqThis = $(e.target);
                        var href = jqThis.attr("href");
                        if (!href || (href.indexOf("javascript:void") == 0 || href.indexOf("###") == 0))
                            e.preventDefault();
                        var cbFun = that.config["on" + name.substr(0, 1).toUpperCase() + name.substr(1, name.length)];
                        if ($.isFunction(cbFun))
                            cbFun.call(that, function() {
                                that.close()
                            });
                        else
                            that.close()
                    })
                })
            },
            open: function(data) {
                this.isOpening = true;
                if (this.tmplId)
                    this.pop.open().content(template(this.tmplId, data));
                else
                    this.pop.open().content(data)
            },
            title: function(str) {
                this.pop.title(str)
            },
            close: function(isQuiet) {
                var that = this;
                if (!isQuiet && this.config.onClose)
                    this.config.onClose.call(this, function() {
                        that.isOpening = false;
                        that.pop.close()
                    });
                else {
                    this.isOpening = false;
                    this.pop.close()
                }
            }
        });
        module.exports = CommonPop
    }
    , {
        "../../template": 58
    }],
    64: [function(require, module, exports) {
        var DropDown = function(customConfig) {
            this._init(customConfig)
        };
        $.extend(DropDown.prototype, {
            defaultConfig: {
                jqContainer: null,
                triggerClass: "ui-dropdown-hd",
                listContainerClass: "ui-dropdown-bd",
                listClass: "ui-dropdown-menu",
                optionClass: "ui-dropdown-menu li",
                optionSelectedClass: "selected",
                openClass: "z-ui-dropdown-open",
                selectedClass: "z-ui-dropdown-selected",
                txtClass: "ui-dropdown-current",
                onSelect: null,
                onReset: null,
                onBeforeOpen: null,
                onClose: null,
                defaultValue: -1,
                defaultText: "\u8bf7\u9009\u62e9",
                loadingOptionHTML: '<li class="ui-dropdown-loading"><i class="ii-loading-pink-24x24"></i><span class="text">\u52a0\u8f7d\u4e2d...</span></li>'
            },
            _init: function(customConfig) {
                this.config = $.extend({}, this.defaultConfig, customConfig);
                this.isFinish = false;
                this.isIgnore = false;
                this.isEnable = true;
                this._bindEvent();
                this.reset(true)
            },
            _bindEvent: function() {
                var that = this;
                this.config.jqContainer.on("click", "." + this.config.triggerClass, function() {
                    if (that.isEnable)
                        if (that.config.jqContainer.hasClass(that.config.openClass))
                            that.closeList();
                        else
                            that.openList()
                }).on("mousedown", "." + this.config.optionClass, function(e) {
                    that.config.jqContainer.find("." + that.config.optionSelectedClass).removeClass(that.config.optionSelectedClass)
                }).on("click", "." + this.config.optionClass, function(e) {
                    var jqThis = $(this);
                    that.selectOption(jqThis);
                    return false
                });
                $("body").on("click", function(e) {
                    if ($(e.target).closest(that.config.jqContainer).size() == 0 && that.config.jqContainer.hasClass(that.config.openClass))
                        that.closeList()
                })
            },
            setList: function(html) {
                this.config.jqContainer.find("." + this.config.listClass).html(html);
                return this
            },
            openList: function() {
                if (!this.config.onBeforeOpen || this.config.onBeforeOpen.call(this) !== false)
                    this.config.jqContainer.addClass(this.config.openClass);
                return this
            },
            closeList: function() {
                this.config.jqContainer.removeClass(this.config.openClass);
                if (this.config.onClose)
                    this.config.onClose.call(this);
                return this
            },
            selectOption: function(jqThis) {
                this.value = jqThis.attr("data-value");
                this.text = jqThis.attr("data-text");
                this.config.jqContainer.find("." + this.config.optionSelectedClass).removeClass(this.config.optionSelectedClass);
                jqThis.addClass(this.config.optionSelectedClass);
                this.config.jqContainer.addClass(this.config.selectedClass).find("." + this.config.txtClass).text(this.text);
                this.isFinish = true;
                if (this.config.onSelect)
                    this.config.onSelect.call(this, this.text, this.value, jqThis);
                this.closeList();
                return this
            },
            selectOptionByValue: function(value) {
                var jqOption = this.config.jqContainer.find('[data-value="' + value + '"]');
                if (jqOption.size() > 0)
                    return this.selectOption(jqOption);
                else
                    return null
            },
            getValue: function() {
                return this.value
            },
            getText: function() {
                return this.text
            },
            ignore: function() {
                this.isIgnore = true;
                this.config.jqContainer.hide();
                return this
            },
            reset: function(isInit) {
                this.value = this.config.defaultValue;
                this.text = this.config.defaultText;
                this.isFinish = false;
                this.isIgnore = false;
                this.closeList();
                this.config.jqContainer.show();
                this.config.jqContainer.removeClass(this.config.selectedClass).find("." + this.config.txtClass).text(this.text);
                if (this.value != -1)
                    this.selectOptionByValue(this.value);
                if (!isInit) {
                    this.setList(this.config.loadingOptionHTML);
                    if (this.config.onReset)
                        this.config.onReset.call(this, this.text, this.value, this.config.jqContainer)
                }
                return this
            },
            disable: function() {
                this.isEnable = false
            },
            enable: function() {
                this.isEnable = true
            }
        });
        module.exports = DropDown
    }
    , {}],
    65: [function(require, module, exports) {
        (function($) {
            var Tooltips = {
                config: {
                    jqTooltips: null,
                    isDynamic: false,
                    hoverSelector: ".J_tooltips_trigger",
                    formItem: ".J_form_item",
                    setFormItemClass: false,
                    formItemTipsShow: "is-form-item-tooltips-in",
                    tipsClass: "ui-tooltips",
                    openClass: "z-ui-tooltips-in",
                    closeClass: "z-ui-tooltips-out",
                    during: 150
                },
                init: function(opt) {
                    var that = this;
                    $.extend(that.config, opt)
                },
                open: function(jqThis, opt) {
                    var that = this;
                    var set = {
                        autoClose: 0
                    };
                    $.extend(set, opt);
                    if (!this.isOpening(jqThis)) {
                        jqThis = jqThis || this.config.jqTooltips;
                        clearTimeout(jqThis.data("vTooltipTimeout"));
                        jqThis.removeClass(this.config.closeClass);
                        jqThis.addClass(this.config.openClass);
                        if (set.autoClose != 0)
                            setTimeout(function() {
                                that.close(jqThis)
                            }, set.autoClose)
                    }
                },
                isOpening: function(jqThis) {
                    jqThis = jqThis || this.config.jqTooltips;
                    return jqThis.hasClass(this.config.openClass) && !jqThis.hasClass(this.config.closeClass)
                },
                close: function(jqThis) {
                    var that = this;
                    jqThis.each(function(key, obj) {
                        var thisObj = $(obj);
                        if (that.isOpening(thisObj)) {
                            thisObj = thisObj || that.config.jqTooltips;
                            thisObj.addClass(that.config.closeClass);
                            thisObj.data("vTooltipTimeout", setTimeout(function() {
                                thisObj.removeClass(that.config.openClass + " " + that.config.closeClass)
                            }, that.config.during))
                        }
                    })
                },
                hideErrTips: function(jqFormItem, opt) {
                    var that = this;
                    var jqTip = jqFormItem;
                    var set = {
                        formErrTips: that.config.openClass
                    };
                    $.extend(set, opt);
                    if (!jqFormItem.hasClass(set.formErrTips))
                        jqTip = jqFormItem.find("." + set.formErrTips);
                    if (this.config.setFormItemClass)
                        jqTip.closest(this.config.formItem).removeClass(this.config.formItemTipsShow);
                    if (jqTip.size() != 0)
                        this.close(jqTip)
                },
                showErrTips: function(jqFormItem, opt) {
                    var that = this;
                    var set = {
                        autoHide: true,
                        formErrTips: that.config.openClass,
                        jqForm: jqFormItem.closest(".J_form"),
                        hideItem: null
                    };
                    $.extend(set, opt);
                    if (set.autoHide) {
                        var hideItem = set.hideItem == null ? set.jqForm.find("." + set.formErrTips) : set.hideItem;
                        this.hideErrTips(hideItem)
                    }
                    var jqTip = jqFormItem.find(".ui-tooltips-warning");
                    if (this.config.setFormItemClass)
                        jqTip.closest(this.config.formItem).addClass(this.config.formItemTipsShow);
                    this.open(jqTip)
                }
            };
            if (VIPSHOP.isMobile) {
                function bindMobileEvent(jqThis) {
                    var jqTip = jqThis.find("." + Tooltips.config.tipsClass);
                    if (Tooltips.isOpening(jqTip))
                        Tooltips.close(jqTip);
                    else
                        Tooltips.open(jqTip)
                }
                $(document).on("click.vui.tooltips.data-api", '[data-toggle="tooltip"]', function(e) {
                    var jqThis = $(this);
                    bindMobileEvent(jqThis)
                }).on("click.vui.tooltips.data-api", Tooltips.config.hoverSelector, function(e) {
                    var jqThis = $(this);
                    bindMobileEvent(jqThis)
                })
            } else {
                $("body").on("mouseenter.vui.tooltips.data-api", Tooltips.config.hoverSelector, function(e) {
                    Tooltips.open($(this).find("." + Tooltips.config.tipsClass))
                }).on("mouseleave.vui.tooltips.data-api", Tooltips.config.hoverSelector, function(e) {
                    Tooltips.close($(this).find("." + Tooltips.config.tipsClass))
                });
                $(document).on("mouseenter.vui.tooltips.data-api", '[data-toggle="tooltip"]', function(e) {
                    Tooltips.open($(this).find("." + Tooltips.config.tipsClass))
                }).on("mouseleave.vui.tooltips.data-api", '[data-toggle="tooltip"]', function(e) {
                    Tooltips.close($(this).find("." + Tooltips.config.tipsClass))
                })
            }
            module.exports = Tooltips
        }
        )(jQuery)
    }
    , {}],
    66: [function(require, module, exports) {
        var pcSwitch = {
            getSwitch: function(code) {
                var _this = this
                  , dtd = $.Deferred();
                $.ajax({
                    url: "//pcapi.vip.com/cc/index.php?code=" + code,
                    cache: false,
                    type: "GET",
                    timeout: 8E3,
                    dataType: "json"
                }).done(function(rtn) {
                    if (rtn.code == 200 && (rtn.data && !$.isEmptyObject(rtn.data)))
                        dtd.resolve(rtn.data);
                    else
                        dtd.resolve()
                });
                return dtd.promise()
            }
        };
        module.exports = pcSwitch
    }
    , {}],
    67: [function(require, module, exports) {
        var CaptchaAPI = require("../../../bo/te/captcha");
        var md5 = require("../../../plugins/modules/SecurityPlugin/md5");
        var VipUI = require("../../../plugins/modules/ui");
        var CommonPop = require("../../../plugins/modules/ui/modules/CommonPop");
        var AntiBrushPop = {
            data: {
                mars_sid: ""
            },
            isOpen: false,
            tmplId: "J_anti_brush",
            UI: {
                refreshBtn: ".J_antibrush_code_refresh",
                verifyBtn: ".J_antibush_buy_btn",
                codeInput: ".J_antibrush_code_inp",
                errTips: ".J-cProt-tips",
                errTipsTxt: ".J_unbrush_error",
                img: ".J_antibrush_code"
            },
            init: function(opt) {
                var that = this;
                if (opt && opt.tmplId != undefined)
                    $.extend(that.tmplId, opt.tmplId);
                this.Pop = new CommonPop({
                    tmplId: that.tmplId,
                    onFirstOpen: function() {
                        that.Pop.popContainer.on("click", that.UI.refreshBtn, function() {
                            that.getAntiSecCode()
                        }).on("click", that.UI.verifyBtn, function() {
                            var jqBtn = $(this);
                            VipUI.Button.loading(jqBtn);
                            that.verify()
                        })
                    },
                    onOpen: function() {
                        that.getAntiSecCode()
                    }
                });
                return this
            },
            verify: function() {
                var captchaCode = this.Pop.popContainer.find(this.UI.codeInput).val();
                if ($.trim(captchaCode) == "")
                    this.onVerifyFail("\u8bf7\u586b\u5199\u9a8c\u8bc1\u7801", "EMPTY");
                else
                    this.onVerify(captchaCode)
            },
            onVerifyFail: function(msg, code) {
                var errTips = this.Pop.popContainer.find(this.UI.errTips)
                  , jqBtn = this.Pop.popContainer.find(this.UI.verifyBtn)
                  , jqCodeInput = this.Pop.popContainer.find(this.UI.codeInput);
                errTips.removeClass("u-hidden").find(this.UI.errTipsTxt).text(msg);
                jqCodeInput.val("");
                VipUI.Button.reset(jqBtn);
                if (code != "EMPTY")
                    this.getAntiSecCode();
                setTimeout(function() {
                    errTips.addClass("u-hidden")
                }, 3E3)
            },
            open: function(onVerify) {
                this.onVerify = onVerify;
                this.Pop.open()
            },
            close: function() {
                this.Pop.close()
            },
            getAntiSecCode: function() {
                this.data.mars_sid = CaptchaAPI.getUuid();
                this.Pop.popContainer.find(this.UI.img).attr("src", CaptchaAPI.getImgUrl(VIPSHOP.detailHost + "/list-ajax.php"))
            },
            genVerify: function(mid) {
                var mars_sid = $.Cookie.get("mars_cid")
                  , captcha = "325deeeabba1ce6c897ec468df5c7e26"
                  , verify = [mars_sid, mid, captcha].join("");
                return md5(verify)
            }
        };
        module.exports = AntiBrushPop
    }
    , {
        "../../../bo/te/captcha": 22,
        "../../../plugins/modules/SecurityPlugin/md5": 52,
        "../../../plugins/modules/ui": 60,
        "../../../plugins/modules/ui/modules/CommonPop": 63
    }]
}, {}, [16]);
